2017-08-08 99 views
1

這是我如何定義我的模式&架構方法。貓鼬「this.model是不是一個函數」

const Schema = mongoose.Schema; 
const ItemSchema = new Schema({ 
     type:String, 
     brand:String, 
    description:String, 
     model:String, 
     price:Number, 
    createdAt:{type: Date, default: Date.now}, 
    updatedAt:{type: Date, default: Date.now} 
}); 


ItemSchema.statics.findBrand = function(brand, callback){ 
    // this == item 
    return this.find({brand: brand}, callback); 
} 

ItemSchema.statics.findType = function(type, callback){ 
    return this.find({type: type}, callback); 
} 

ItemSchema.methods.findSameBrand = function(cb){ 
    return this.model("Item").find({brand: this.brand}, cb); 
} 

var Item = mongoose.model("Item", ItemSchema); 

將項目添加到數據庫和使用方法。

Item.remove({}, function(err) { 
    if (err) console.error(err); 

    Item.create(itemData, function(err, items) { 
     if(err) console.error(err); 

     Item.findOne({type: "Mouse"}, function(err, mouse){ 

      console.log(mouse); 

      mouse.findSameBrand((err, items) => { 
       if (err) console.error(err); 

       //any code 

      db.close(() => { 
       console.log("connection closed"); 
      }); 

     }); 

    }); 

}); 

的執行console.log(鼠標)打印第一個鼠標文件就可以發現

{ _id: 598907ecbf5ac40b24346028, 
    type: 'Mouse', 
    brand: 'Corsair', 
    description: '2', 
    model: 'G104', 
    price: 8000, 
} 

但我得到的是this.models不是一個函數錯誤。

this.model不是一個函數。
在model.ItemSchema.methods.brandFind>(/用戶/肖恩/ ApplicationsDevelopment/sandbox.js:39:21)

回答