var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/part10');
var BookSchema = new mongoose.Schema({
name: String,
isbn: Number
});
// 静态方法
BookSchema.statics.findByISBN = function(isbn, cb){
this.findOne({isbn: isbn}, function(err, doc){
cb(err, doc);
});
};
// 实例方法
BookSchema.methods.print = function(){
console.log('Book Information:');
console.log('\tTitle:', this.name);
console.log('\tISBN:', this.isbn);
};
var Book = mongoose.model('Book', BookSchema);
var book = new Book({
name: 'MEAN Web Development',
isbn: 9787100
});
book.save(function(err){
if(err) {
return console.log('save book failed', err);
}
Book.findByISBN(9787100, function(err, doc){
console.log('findByISBN, err, doc:', err, doc);
});
book.print();
});
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/part10');
var OrderSchema = new mongoose.Schema({
count: {
type: Number,
// 是否必须的校验器
required: true,
// 数字类型的最大值校验器
max: 1000,
// 数字类型的最小值校验器
min: 10
},
status: {
type: String,
// 设置字符串的可选值
enum: ['created', 'sucess', 'failed']
},
desc: {
type: String,
// 使用正则表达式来校验字符串的内容
match: /book/g,
// 自定义的验证器,如果通过验证返回 true,没有通过则返回 false
validate: function(desc) {
return desc.length >= 10;
}
}
});
var Order = mongoose.model('Order', OrderSchema);
var order = new Order();
order.count = 10;
order.status = 'created';
order.desc = 'this is a great book';
order.save(function(err){
if(err) {
return console.log('save failed:', err);
}
console.log('save success');
});
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/part10');
var ResellerSchema = new mongoose.Schema({
address: String
});
// 普通的中间件
ResellerSchema.post('save', function(next){
console.log('this is ResellerSchema post save middleware');
next();
});
// 可以并行执行的中间件
ResellerSchema.pre('save', true, function(next, done){
console.log('this is ResellerSchema pre save middleware');
next();
// done 需要传给并行执行的方法或者过程,当该并行执行的方法或过程完成执行之后,调用 done
// 以通知 mongoose 执行完成。
done();
});
var Reseller = mongoose.model('Reseller', ResellerSchema);
var reseller = new Reseller({
address: '101st, People Read'
});
reseller.save();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/part10');
var User = mongoose.model('User', {
username: String
});
var News = mongoose.model('News', {
title: String,
// DBRef 的定义
author: {
type: mongoose.Schema.ObjectId,
ref: 'User'
}
});
var user = new User({
username: 'Sid'
});
var news = new News({
title: 'Congratulation!',
author: user
});
user.save(function(err){
if(err) {
return console.log('save user failed:', err);
}
news.save(function(err){
if(err) {
return console.log('save news failed:', err);
}
// 使用 populate() 方法填充数据
News.findOne().populate('author').exec(function(err, doc){
console.log('after populate: ', err, doc);
});
});
})