首页 文章

Mongodb重复键错误 . 如何从错误对象中获取错误字段作为对象?

提问于
浏览
6

当尝试在mongo中输入一个新文档时,如果我在另一个文档中已经存在一个字段,那么当我遍历错误对象时,我会得到这个:

for(var att in err){
    console.log(att+": "+err[att]);
}

名称:MongoError错误:E11000重复键错误索引:draw.users . $ email_1 dup key:{:“spam@online.no”}代码:11000 n:0 ok:1

所以它告诉我我想知道什么,问题是电子邮件领域 . 但是我可以将违规字段作为键/值而不仅仅是字符串吗?

4 回答

  • 3

    错误消息未提供您要查找的信息:

    名称:MongoError错误:E11000重复键错误索引:draw.users . $ email_1 dup key:{:“spam@online.no”}代码:11000 n:0 ok:1

    但它足以让你找回它 .

    您需要获取导致问题的索引:“email_1”(使用正则表达式)

    然后你需要向db询问这个索引:

    draw.users.getIndexKey(“email_1”)

  • 0

    使用拆分错误消息以这种方式为我返回工作

    var x= err.errmsg.split("index:")[1].split("dup key")[0].split("_")[0];
    
  • 0

    我使用正则表达式 . 像这样

    if(err){
       field = err.err.match(/\$(.*?)_/)[1]
    }
    

    这完全是hacky,但对我有用 .

  • 0

    如果它发生碰撞,那么为该查询创建一个find()将返回碰撞对象并从那里开始 .

相关问题