javascript - 使用 Mongoose 模型检查集合中是否存在文档
问题描述
我想检查“用户”集合中是否已存在电子邮件:
我有这个模型:
const isEmailExists = async (value) => {
const res = await User.countDocuments({ email: value });
return res > 0;
}
const User = mongoose.model('User', {
email: {
type: String,
required: true,
validate(value) {
isEmailExists(value).then(res => {
if (res) {
throw new Error('Email already exists');
}
})
}
}
});
我使用快速路由器的 post 方法:
router
.route('/register')
.get((req, res) => {
res.sendFile(publicDirPath + '/auth/register.html');
})
.post(async (req, res) => {
const user = new User(req.body);
try {
const saveUser = await user.save();
res.send(saveUser);
} catch (error) {
res.send(error);
}
});
由于某种原因,它不起作用,并且无论如何都添加了用户..
我究竟做错了什么 ?
解决方案
如果要检查是否存在具有特定条目/值的文档,可以执行以下操作:
function emailExists(value) {
User.findOne({email: value}).then((err, user) => !!user)
}
推荐阅读
- flutter - Flutter 中的索引堆叠。如何在所有其他小部件之上显示容器?
- elasticsearch - 当文档的日期时间字段值为 2 天时,如何使用 Elastic Search 获取警报
- javascript - 我的 js 函数调用了一个显然没有在任何地方设置的变量
- python-3.x - PySpark 用户定义函数 (UDF) 以创建新列
- javascript - 未捕获的类型错误读取 null 的属性(读取“值”)
- angular - 如何将onedrive与角度集成?
- flutter - 内存泄漏问题/应用程序崩溃 - Flutter 中的 StreamBuilder > StreamBuilder > GridView.builder
- c# - 在 C# 中创建 .zip 并在其中添加 xml 文件
- bash - awk 输出不匹配的行
- spring-boot - 以大写开头的列排序不适用于 findAll 方法