Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js CouchDB在所需字段验证时返回HTTP 403_Node.js_Couchdb - Fatal编程技术网

Node.js CouchDB在所需字段验证时返回HTTP 403

Node.js CouchDB在所需字段验证时返回HTTP 403,node.js,couchdb,Node.js,Couchdb,过去几周我一直在一个小型coach/NodeJS项目上工作,我需要一些现场验证(必需,类型…)。我通过向设计文档添加validate\u doc\u update解决了这个问题 在做了一些测试之后,我意识到我收到的是403个禁止的HTTP代码,而不是400个错误的请求,我认为这在这个用例中更合适 表示我可以抛出以下错误对象之一: 抛出:禁止错误以正常阻止文档存储。(403) 抛出:未经授权的错误,以防止存储并允许用户重新验证。(401) 关于管理此类验证问题的最佳方法有什么想法 更新: 验证文档

过去几周我一直在一个小型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!当我得到声誉=)时,我会回来投票支持你的答案