Mongoose模型方法:属性不保存?

时间:2017-04-02 03:10:38

标签: node.js mongodb mongoose

我正在尝试在猫鼬模型上编写一个方法,该方法将根据我传入的对象填充一些字段。

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中保存了一个新对象,除了默认街道名称之外没有其他属性。我做错了吗?

1 个答案:

答案 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

首先,您需要创建一个模型才能使用该模式。这些模型的实例是可以使用您定义的自定义方法的文档。