mongoose 相关操作


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);
    });
  });
})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值