javascript - 如何检查 MongoDB 中是否已经存在选定的电子邮件和名称
问题描述
如果选定的用户电子邮件和名称已存在于 MongoDB 数据库中的某个位置,我想获取信息。我想让电子邮件和名称独一无二,因此它不能与这两个值重复。
我已经编写了工作代码,但我想知道这个解决方案是否是最佳的。
User.find({ email: email })
.then(user => {
if (user.length >= 1) {
return res.status(409).json({
message: 'Mail exists'
})
} else {
User.find({ name: name })
.then(user => {
if (user.length >= 1) {
return res.status(409).json({
message: 'Name exist'
})
} else {
// SOME CODE HERE
}
})
}
})
有没有更短的方法来写这个?谢谢 :)
解决方案
如果您使用的是 Mongoose,您可以使用以下方法在模型中实现此目的mongoose-unique-validator
:
const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');
const userSchema = mongoose.Schema({
email: { type: String, required: true, unique: true },
name: { type: String, required: true, unique: true },
password: { type: String, required: true }
});
userSchema.plugin(uniqueValidator);
module.exports = mongoose.model('User', userSchema);
这样,如果 Mongoose 检测到您尝试使用现有名称或电子邮件添加用户,它将引发错误。
推荐阅读
- ember.js - 如何排除公用文件夹中的图像文件
- jquery - 表单提交失败后显示隐藏字段
- django - python3 不是用于创建 django runserver 的内部或外部命令、可运行程序或批处理文件
- python - 如何解决此错误“对象没有属性”
- google-chrome - WebdriverIO - 由于 chrome/chromedriver 错误,无法运行测试运行程序
- json - 通过 Ajax 错误和 JSON 数据遍历问题在 API 中发送 JSON 数据
- python - 在已知 XY 坐标时绘制像素和轮廓
- docker - 重构 docker 持久卷/挂载路径
- python - 如何在python中的二维列表问题中插入元素
- scala - Scala中的日期格式