首页 > 解决方案 > 在保存之前从 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()
    });


    });

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

标签: javascriptnode.jsmongodb

解决方案


尝试这个 ...

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

推荐阅读