Node.js CouchDB在所需字段验证时返回HTTP 403
过去几周我一直在一个小型coach/NodeJS项目上工作,我需要一些现场验证(必需,类型…)。我通过向设计文档添加validate\u doc\u update解决了这个问题 在做了一些测试之后,我意识到我收到的是403个禁止的HTTP代码,而不是400个错误的请求,我认为这在这个用例中更合适 表示我可以抛出以下错误对象之一: 抛出:禁止错误以正常阻止文档存储。(403) 抛出:未经授权的错误,以防止存储并允许用户重新验证。(401) 关于管理此类验证问题的最佳方法有什么想法 更新: 验证文档更新的内容:Node.js CouchDB在所需字段验证时返回HTTP 403,node.js,couchdb,Node.js,Couchdb,过去几周我一直在一个小型coach/NodeJS项目上工作,我需要一些现场验证(必需,类型…)。我通过向设计文档添加validate\u doc\u update解决了这个问题 在做了一些测试之后,我意识到我收到的是403个禁止的HTTP代码,而不是400个错误的请求,我认为这在这个用例中更合适 表示我可以抛出以下错误对象之一: 抛出:禁止错误以正常阻止文档存储。(403) 抛出:未经授权的错误,以防止存储并允许用户重新验证。(401) 关于管理此类验证问题的最佳方法有什么想法 更新: 验证文档
function (newDoc, oldDoc, userCtx){
function require(field, message){
message = message || "Block must have a " + field;
if (!newDoc[field]) throw({forbidden : message});
};
if(newDoc.type == "block"){
require("name")
}
}
我知道投掷({禁止:消息})会给403。。。有没有办法改变CouchDB上的这种行为,或者我应该在express上安装自己的验证中间件?是的,这实际上是CouchDB的一个丑陋的角落。我很惊讶,仍然没有一个条款可以用422来响应(这比403更适合无效文档),但是是的-我们所做的是添加了我们自己的中间件来做正确的事情。请发布您的代码。非常感谢@smathy!当我得到声誉=)时,我会回来投票支持你的答案