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
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
|