对于我的项目,我创建了一个简化的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},
但是没有定义.
我该如何将默认值设置为等于另一个值?
cod*_*ode 15
使用这里pre解释的中间件
userSchema.pre('save', function (next) {
    this.screenname = this.get('_id'); // considering _id is input by client
    next();
});
您可以将函数传递给默认值,以下是模式字段摘录:
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;
    }
},