CouchDB在必要的字段validation上返回HTTP 403

在过去的几个星期里,我一直在做一个小型的Couch / NodeJS项目,我需要一些字段validation(必需的,types…)。 我通过将validate_doc_update添加到devise文档来解决这个问题。

在做了一些testing后,我意识到我正在接收403个禁止的HTTP代码,而不是400个不好的请求,我认为在这个用例中更合适。

CouchDB文档说,我只能抛出这些错误对象之一:

抛出 :禁止错误,以防止文件存储。 (403)

抛出 :未经授权的错误,以防止存储,并允许用户重新authentication。 (401)

什么是pipe理这种validation问题的最佳方法的任何想法?

更新:

validate_doc_update的内容:

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") } } 

我知道throw({forbidden:message})会给403 …有什么办法来改变CouchDB上的行为,或者应该build立我自己的validation中间件明确?

是的,这实际上是CouchDB的一个丑angular。 我感到惊讶的是,还没有一个规定可以用422(对于一个无效的文档比403更合适)做出回应,但是是的 – 我们所做的就是添加我们自己的中间件来做正确的事情。