javascript - 在保存之前从 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()
});
});
但它会删除集合中的每个用户,甚至是之前创建的唯一用户。任何人都可以提供建议或告诉可能的修复方法吗?任何帮助表示赞赏。也许还有另一种检查电子邮件“唯一性”的方法?
解决方案
尝试这个 ...
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()
});
});
推荐阅读
- firebase - 如何在flutter Firestore中存储类别和子类别
- flutter - 类型“TextEditingController”不是类型转换中“int”类型的子类型
- r - 拒绝所有变量
- php - 我正在登录我的后端页面,他收到错误用户名和密码不匹配,但我的电子邮件 ID 和密码在 MySQL 服务器中是正确的
- sql-server - 将数据加载到内存中或多次选择
- regex - 使用括号在scala中提取json响应值的问题
- reactjs - 与快递服务器做出反应,在邮寄时给我 400
- java - 为什么我会收到 TransactionTooLargeException?
- firewall - Mikrotik - 限制特定端口的上传速度
- azure - 所有实例均未在 Azure 应用服务中运行