保存前从MongoDB中删除字段

时间:2018-04-30 16:01:16

标签: javascript node.js mongodb

我有一个架构

    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()
    });


    });

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

1 个答案:

答案 0 :(得分:0)

试试这个......

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()
        });
       });