Javascript 独特在猫鼬身上有什么作用

Javascript 独特在猫鼬身上有什么作用,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在学习使用node和mongoose构建API。在创建模式时,我将其中一个值设置为unique:true。但在我正在观看的教程中,这家伙再次检查数据库中是否存在电子邮件。这不是双重工作吗?如果email的值被设置为唯一,为什么要使用findOne方法检查它是否存在?此唯一:true是否应处理此问题?在您遇到的几乎所有情况下,手动查询以检查值是否唯一对于验证来说都没有意义。 Mongoose会自动在字段上创建一个唯一的索引,因此mongodb将在本例中处理实际的验证 即使是错误处理的情况也可以

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

在您遇到的几乎所有情况下,手动查询以检查值是否唯一对于验证来说都没有意义。 Mongoose会自动在字段上创建一个唯一的索引,因此mongodb将在本例中处理实际的验证

即使是错误处理的情况也可以像这样轻松地完成。但是,根据您的代码,可能会出现一些设置,需要对这种情况进行特定的错误处理(例如,如果没有通过实际错误进行错误处理,或者程序流不应停止该过程)

另一种边缘情况可能是通过直接使用mongodb驱动程序绕过mongoose验证的查询,但如前所述,这并不重要,因为mongodb(不是mongoose)仍然会抛出“重复密钥”错误


最后,与count或find()一样,使用findOne检查对象是否存在并不是最有效的选择。在这种情况下,限制(1)可能是更有效的选择。

教程中的指南是在插入前检查
电子邮件吗?是@SagarChilukuri`这似乎是双重工作,但这样我们可以更好地处理错误,并在我们的应用程序中显示一条用户友好的错误消息,而如果某些文档必须添加到应用程序之外的集合中,则使用unique:true选项创建的uniqueIndex也将有用。@SuleymanSah,这是有道理的。非常感谢。