猫鼬有什么独特之处

时间:2019-10-14 14:51:01

标签: javascript node.js mongoose

我正在学习使用node和mongoose构建API。创建模式时,我将其中一个值设置为unique : true。但是,在我正在观看的教程上,那个家伙又在检查数据库中是否存在电子邮件。这不是双重工作吗?如果email的值设置为unique,为什么还要使用findOne方法检查它是否存在?这个unique:true是否应该照顾这个?

1 个答案:

答案 0 :(得分:1)

在几乎所有情况下,手动验证以检查该值是否唯一对于验证目的来说都是没有意义的。 猫鼬会在字段上自动创建一个唯一索引,因此在这种情况下,mongodb正在处理实际的验证。

甚至可以像this一样轻松地进行错误处理。不过,根据您的代码,可能会发生一些设置,需要对此情况进行特定的错误处理(例如,如果错误处理没有通过实际的错误进行,或者程序流不应停止该过程)

另一种极端情况是直接使用mongodb驱动程序绕过mongoose验证的查询,但是如前所述,这无关紧要,因为mongodb(非mongoose)仍会抛出“重复键”错误。 / p>

最后,使用findOne检查对象的存在不是最有效的选择,因为在这种情况下,count或find()。limit(1)可能是更有效的选择。