Jon*_*ler 18 mongodb debugging data-validation
如何确定 MongoDB 文档插入验证失败的原因?我得到的只是一个写着“文档验证失败”的 writeError,这不是很有帮助。
(这种情况经常发生,我想了解如何正确调试这些,而不是寻求特定示例的帮助。)
Ste*_*nie 14
在 MongoDB 3.2 中,没有关于文档验证失败原因的反馈:整体验证表达式当前评估为 True(“OK”)或 False(“文档验证失败”)。可以使用validationAction(error/warn) 和validationLevel(strict/moderate/off) 配置选项调整验证行为,但这不会为验证失败提供任何进一步的上下文。
如果您想获得更详细的反馈,推荐的方法是将验证逻辑添加到您的应用程序中,而不是仅依赖于服务器端检查。即使使用服务器端验证,最好在应用程序业务逻辑中完成许多检查,以最大限度地减少到数据库服务器的往返次数,并为最终用户提供更具响应性的反馈。
例如,Web 应用程序的用户输入(必填字段、字段格式等)应在提交给应用程序或尝试在数据库中插入/更新之前在浏览器中进行验证。
但是,在多个级别进行验证以确保数据质量确实有意义,并且诊断验证失败的一些上下文将非常有用。有一个相关的开放功能请求,您可以在 MongoDB 问题跟踪器中观看/投票:SERVER-20547: Expose the reason an operation failed document validation。
有关更多信息,您可能还对文档验证 - 第 1 部分:对文档添加适当的控制量感兴趣。这突出了 MongoDB 3.2 中文档验证的一些一般优缺点,并包括基于validationAction和validationLevel配置选项的结果的参考表。