当前位置: 首页 > 面试题库 >

猫鼬唯一验证错误类型

程志新
2023-03-14
问题内容

我正在mongoose 3.0.3从npm 使用此架构

var schema = new Schema({

    _id: Schema.ObjectId,
    email: {type: String, required: true, unique: true}

});

如果我尝试保存已经存在于db中的电子邮件,则ValidationError如果required省略该字段,我希望得到一个类似的电子邮件。但是事实并非如此,我得到了MongoError: E11000 duplicate key error index

这不是验证错误(即使我删除了unique:true也会发生)。

知道为什么吗?


问题答案:

我更喜欢将其放在路径验证机制中,例如

UserSchema.path('email').validate(function(value, done) {
    this.model('User').count({ email: value }, function(err, count) {
        if (err) {
            return done(err);
        } 
        // If `count` is greater than zero, "invalidate"
        done(!count);
    });
}, 'Email already exists');

然后,它将被包装,ValidationError并在您调用validate或时作为第一个参数返回save



 类似资料:
  • 问题内容: 我试图用mongoose在mongodb中保存一个新文档,但是即使我提供电子邮件,passwordHash和用户名,我也能得到。 这是用户架构。 这就是我创建和保存用户对象的方式。 那么为什么猫鼬会返回验证错误,我不能用作临时值吗? 问题答案: 回应您的最后评论。 您正确的认为null是一个值类型,但是null类型是一种告诉解释器它 没有value的方法 。因此,必须将这些值设置为任何

  • 问题内容: 我试图让MongoDB根据其索引检测重复值。我认为这在MongoDB中是可能的,但是通过Mongoose包装器,事情似乎被打破了。所以对于这样的事情: 我可以用同一封电子邮件保存2个用户。真是 在这里也表达了同样的问题:https : //github.com/LearnBoost/mongoose/issues/56,但是该线程很旧,导致无处可去。 现在,我正在手动调用数据库以查找用

  • 我正试图决定如何处理猫鼬中的验证错误。 我使用节点验证器定义了自己的验证规则,例如: 这将产生如下错误: 然而,节点验证器提供了自己的错误消息。如果我使用mongoose validator节点模块将节点验证器直接插入到我的模式中,那么我可以直接使用这些错误消息: 这将生成一条错误消息,如下所示: 我也可以在此处提供自定义错误消息: Mongoose允许您根据需要定义字段: 这将生成一条错误消息,

  • 问题内容: 我正在使用Restify和Mongoose创建一个API ,而这两个都是我的新手。我似乎无法找出正确的方法来处理Mongoose / Node中的错误。 到目前为止,我正在尝试执行以下操作: 我正在尝试为此调用GET(针对不存在的用户)。而不是发送回简单的错误消息,而是导致整个节点应用程序失败。我对return next(err)的用户以及应该怎么做感到困惑。 任何帮助是极大的赞赏。

  • 本文向大家介绍yii2 从数据库验证唯一值:唯一验证,包括了yii2 从数据库验证唯一值:唯一验证的使用技巧和注意事项,需要的朋友参考一下 示例 如果输入现有值,某些人会遇到有关无法显示错误消息的问题。例如,我不允许用户使用现有电子邮件进行注册。 视图 控制者 模型            

  • 问题内容: 如果猫鼬无法连接到数据库,如何设置错误处理的回调? 我知道 但是是否有类似的东西 ? 问题答案: 连接后,您可以在回调中获取错误: