使用Mongoose在对象中使用属性引用

时间:2016-02-01 11:22:29

标签: node.js mongoose

我使用的是Mongoose,我的模型就像 -

{
first_name:{
 type:String
},
lastName:{
 type:String
}
name:{
 type:String
}
}

我想每当我使用firstName和lastName创建对象时,name字段应自动设置为firstName +" " + lastName。

我可以使用像Java一样的东西 -

name = this.firstName+this.lastName 

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用pre方法

尝试
schema.pre('save', function (next) {
    this.name = this.lastName + this.firstName;
    next();
});

var Person = mongoose.model('Person', schema);

function saveData() {
    var p = new Person({
        lastName: 'DD',
        firstName: 'ss'
    });

    p.save(function(err, obj) {
      console.log(obj);
    }); 
}

结果

{ __v: 0,
  name: 'DDss',
  lastName: 'DD',
  firstName: 'ss',
  _id: 56af4489b81a1f2903a13608 }

答案 1 :(得分:0)

我个人更喜欢使用虚拟名称。

var PersonSchema = new Schema({
    name: {
        first: String
      , last: String
    }
});
PersonSchema
.virtual('name.full')
.get(function () {
    return this.name.first + ' ' + this.name.last;
});