猫鼬唯一验证器
如何使用此插件:
1)npm install-保存猫鼬唯一验证器
2)在您的架构中,请遵循以下指南:
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
exampleSchema.plugin(uniqueValidator);
3)猫鼬的方法
使用类似方法时,findOneAndUpdate
您将需要传递此配置对象:
{ runValidators: true, context: 'query' }
ie. User.findOneAndUpdate(
{ email: 'old-email@example.com' },
{ email: 'new-email@example.com' },
{ runValidators: true, context: 'query' },
function(err) {
}
4)其他选项
不区分大小写
在模式中使用uniqueCaseInsensitive选项
ie. email: { type: String, index: true, unique: true, required: true, uniqueCaseInsensitive: true }
自定义错误消息
ie. exampleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' });
现在,您可以在架构中添加/删除唯一属性,而不必担心重启mongo,删除数据库或创建索引。
注意事项(来自文档):
因为我们依靠异步操作来验证数据库中是否存在文档,所以有可能同时执行两个查询,两个查询都返回0,然后都插入到MongoDB中。
除了自动锁定集合或强制单个连接之外,没有真正的解决方案。
对于我们的大多数用户来说,这不是问题,但是这是一个边缘情况。