【问题标题】:mongoose default value equal to other value猫鼬默认值等于其他值
【发布时间】:2020-07-23 15:09:02
【问题描述】:

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

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

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

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

但是当然 _id 没有定义。

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

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    使用pre 中间件解释here

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

    【讨论】:

      【解决方案2】:

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

      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;
          }
      },
      

      【讨论】:

        猜你喜欢
        • 2020-06-13
        • 2018-12-03
        • 2016-06-20
        • 2019-04-10
        • 2013-03-24
        • 1970-01-01
        • 2018-07-05
        • 2016-12-28
        • 1970-01-01
        相关资源
        最近更新 更多