mongoose——扩展内置方法

百里杰
2023-12-01

扩展静态方法

  1. 定义Schema
    let HeroSchema = new mongoose.Schema({
        // 此处为表字段内容
    });
    
  2. 定义静态方法
    // 自定义查询方法
    HeroSchema.statics.findByType = function (type, callback) {
      // this关键字可以获取当前model
      this.find({ type: type }, (err, docs) => {
        callback(err, docs);
      })
    }
    let HeroModel = mongoose.model('Hero', UserSchema, 'hero');
    
  3. 使用自定义静态方法
    HeroModel.findByType('法师',(err, docs) => {});
    

扩展实例方法

  1. 定义实例方法
    // 自定义查询方法
    HeroSchema.methods.print = function (type, callback) {
      // this关键字可以获取当前实例对象,注意此处不要使用箭头函数
      console.log(this)
    }
    let HeroModel = mongoose.model('Hero', UserSchema, 'hero');
    
  2. 使用实例方法
    let hero = new HeroModel({
      name:'孙尚香',
      life:5400,
      type:'射手'
    });
    hero.print(); // {name:"孙尚香",left:5400,type:"射手"}
    
 类似资料: