我有一个架构
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()
});
});
但它会删除集合中的每个用户,甚至是之前创建的唯一用户。任何人都可以提出建议或告诉可能的解决方法吗?任何帮助赞赏。也许有另一种方法来检查电子邮件“唯一性”?
答案 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()
});
});