我正在尝试在猫鼬模型上编写一个方法,该方法将根据我传入的对象填充一些字段。
let mySchema = mongoose.Schema({
name: String,
age: Number,
street: { type: String, default: 'No' }
});
mySchema.methods.populate = function(o) {
this.age = o.age + 10;
});
在其他地方,我将初始化一个实例并运行该方法:
let newThing = new MySchema();
newThing.populate({ age: 12 });
newThing.save();
这成功地在mongo中保存了一个新对象,除了默认街道名称之外没有其他属性。我做错了吗?
答案 0 :(得分:1)
您可以参考此代码,它将起作用。
在 server.js
中 var mongoose = require('mongoose')
var Model = require('./model')
mongoose.Promise = global.Promise;
mongoose.connect('**dbUrl**')
var NewData = new Model({
name: 'Tolsee'
})
NewData.populate({ age: 15 })
NewData.save(function(err){
if (err) {
throw err
}else{
console.log('Your data is saved successfully')
}
})
在 model.js
中var mongoose = require('mongoose')
var Schema = mongoose.Schema
const customSchema = new Schema({
name: String,
age: Number,
street: { type: String, default: 'No' }
})
// Custom function
customSchema.methods.populate = function(o) {
this.age = o.age
return this.age
}
// create the model to export
var custom = mongoose.model('customModel', customSchema)
module.exports = custom
首先,您需要创建一个模型才能使用该模式。这些模型的实例是可以使用您定义的自定义方法的文档。