当前位置:  开发笔记 > 后端 > 正文

处理MongoDB异常的更好方法

如何解决《处理MongoDB异常的更好方法》经验,为你挑选了1个好方法。

我正在为我的asp.net应用程序开发MongoDB支持的身份验证模块.MongoDB数据库有一组用户,我存储登录信息 - 用户名,电子邮件和密码.用户名和电子邮件都设置为唯一:

users.ensureIndex({email:1}, {unique:1})
users.ensureIndex({uname:1}, {unique:1})

现在,如果我尝试使用现有的uname或email插入记录,我会收到MongoDB异常:

Safemode detected an error: E11000 duplicate key error index: 
authdb.users.$email_1  dup key: { : "test@test.com" } 
(response: { "err" : "E11000 duplicate key error index: authdb.users.$email_1  
dup key: { : \"test@test.com\" }", "code" : 11000, "n" : 0, "connectionId" : 9, 
"ok" : 1.0 })

我需要告诉用户他们输入的用户名或电子邮件已经存在,但整个例外只是一小段文字,看看发生了什么我必须通过查看"$ email"或"$ uname"来猜测在错误消息文本中.MongoDB异常是否有某种解析器可以帮助我检测异常是什么?



1> mstearn..:

我在MongoDB的bug跟踪器中创建了一个功能请求,以便在重复键错误时为getLastError的输出添加额外的字段.请在https://jira.mongodb.org/browse/SERVER-3069投票.

在实现之前,对于您的用例,您只需检查错误字符串是否包含"email"或"uname",并从您尝试插入的文档中检索重复值.它并不像它可能那么优雅,但它现在应该有用.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有