【问题标题】:Delete a field from MongoDB before saving在保存之前从 MongoDB 中删除一个字段
【发布时间】:2018-05-01 01:37:19
【问题描述】:

我有一个架构

    var UserSchema = new mongoose.Schema({
  email: {
    type: String,
    required: true,
    trim: true,
    minlength: 1,
    unique: true,
    validate: {
      validator: validator.isEmail,
      message: "{VALUE} is not a valid email"
     }
   }
}

如您所见,电子邮件具有“唯一”属性。但是,当我使用相同的电子邮件创建多个用户时,任何地方都不会出现错误。所以,我决定在“PRE”方法中创建一个循环。在我保存新用户之前,它会检查电子邮件是否已存在于 mongo 中,然后将其删除

    UserSchema.pre('save', function (next) {
      var user = this;

      User.find({email: user.email}).then((res) => {
        return User.remove({email: res[1].email});
     }).then((res) => {
      console.log(res);
      next()
    });


    });

但它会删除集合中的每个用户,甚至是之前创建的唯一用户。任何人都可以提供建议或告诉可能的修复方法吗?任何帮助表示赞赏。也许还有另一种检查电子邮件“唯一性”的方法?

【问题讨论】:

标签: javascript node.js mongodb


【解决方案1】:

试试这个...

UserSchema.pre('save', function (next) {
          var user = this;

          User.findOne({email: user.email}).then((res) => {
            return User.remove({email: res.email});
         }).then((res) => {
          console.log(res);
          next()
        });
       });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多