mongoose默认值等于其他值

时间:2015-04-29 18:45:49

标签: node.js mongodb

对于我的项目,我创建了一个简化的userSchema,如下所示:

var userSchema = new Schema({
    _id: String,
    screenname: {type: String, required: false, default: "equal _id"},
});

用户的_id是一个字符串,也是他的用户名。 到目前为止,一切都有效,直到我尝试添加额外的字段屏幕名称。我想要的是当用户创建一个帐户时,他的screenname等于_id的值。后来他可以调整它,但默认情况下它应该等于_id的值。我也尝试过:

 screenname: {type: String, required: false, default: _id},

但是没有定义_c的事件。

我应该如何将默认值设置为另一个值?

2 个答案:

答案 0 :(得分:12)

使用解释here

pre中间件
userSchema.pre('save', function (next) {
    this.screenname = this.get('_id'); // considering _id is input by client
    next();
});

答案 1 :(得分:3)

您可以将函数传递给默认值,以下是模式字段摘录:

username: {
    type: String,
    required: true,
    // fix for missing usernames causing validation fail
    default: function() {
        const _t = this as any; // tslint:disable-line
        return _t.name || _t.subEmail;
    }
},