You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
2.2 KiB

# Mongo - Mongoose
## Lesson Objectives
1. Explain ODM
1. Explain Schema
1. Explain Create/Save
1. Explain Find
1. Explain Update
1. Explain Remove
1. Explain Helper Functions
## Explain ODM
## Explain Schema
article.js
```javascript
var mongoose = require('mongoose');
mongoose.set('debug', true);
var Schema = mongoose.Schema;
var articleSchema = new Schema({
title: { type: String, required: true, unique: true },
author: { type: String, required: true },
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//Creating an Article class -- will be stored in 'articles' collection
var Article = mongoose.model('Article', articleSchema);
module.exports = Article;
```
1. String
1. Number
1. Date
1. Boolean
1. Mixed
1. ObjectId
1. Array
## Explain Create/Save
```javascript
var mongoose = require('mongoose');
var db = mongoose.connection;
var Article = require('./article.js');
//Setting up a new article
var newArticle = new Article({
title: 'Awesome Title',
author: 'Matt'
});
newArticle.hidden = false;
//connect to mongo
mongoose.connect('mongodb://localhost:27017/example');
//if the connection fails
db.on('error', function(){
console.log('error');
});
db.once('open', function() {
//we're connected!
//save article to the database
newArticle.save(function(err, article) {
if(err) {
console.log(err);
} else {
console.log(article);
}
mongoose.connection.close();
});
});
```
## Explain Find
```javascript
Article.find({author:'Matt'}, 'name -_id',function(err, articles){
console.log(articles);
mongoose.connection.close();
})
```
## Explain Update
```javascript
Article.update({ author: 'Matt' }, { $set : { author: 'Matthew' } }, { multi: true }, function (err, response) {...});
```
## Explain Remove
```javascript
Article.remove({author:'Matt'}, function(err){...});
```
```javascript
Article.findOne({title:'Harry Potter'}, function(err, article){
article.remove();
});
```
## Explain Helper Functions
1. findById
1. findOne
1. findByIdAndUpdate
1. findByIdAndRemove
1. findOneAndUpdate
1. findOneAndRemove