我正在查看一个有点流行的授权实用程序,并注意到这一点:
User.findOne({
email: req.body.email.toLowerCase()
}, function (err, existingUser) {
if (existingUser) {
return res.status(409).send({
message: 'Email is already taken'
});
}
将用户电子邮件设置为唯一索引并为此处理错误,而不是查询以检查已存在的错误,是否更有效?
答案 0 :(得分:0)
最好检查,而不是依赖mongodb错误。 因为如果驱动程序内部发生了某些变化,你就不会意识到你会弄得一团糟。
例如。 Mongo 4.0版不会在唯一索引上抛出错误,只是用相应的字段替换数据。
或者某些开发人员更改createNewUser方法而不是保存它现在使用更新如果我们有错误。
或类似的东西。
通过验证电子邮件字段,您将在以后阻止所有这些问题和许多痛苦。
希望这会有所帮助。