我刚接触 Couchdb 几周前我git克隆了名为沙发 [what and app]的couchdb应用程序。这一周过得很好但突然间我今天偶然发现了什么。
这就是我的意思 当我浏览沙发应用程序并尝试创建没有标题的帖子时 它提示并提示框“无法保存文档:无法创建数据库,文件已存在。”这很奇怪,因为查看源代码我发现需要(在< strong> validate_doc_update.js 返回其自定义json错误)格式为{“forbidden”:message}),禁止为关键
v.forbidden = function(message) {
throw({forbidden : message})
};
v.require = function() {
for (var i=0; i < arguments.length; i++) {
var field = arguments[i];
message = "The '"+field+"' field is required.";
if (typeof newDoc[field] == "undefined") v.forbidden(message);
};
};
在validate_doc_update.js
中if (newDoc.type == 'post') {
if (!v.isAuthor()) {
v.unauthorized("Only authors may edit posts.");
}
v.require("created_at", "author", "body", "format", "title");
检查json返回的响应状态是否与json不同,如果它已经被validate_doc_update.js中的上述 require 函数返回 这是json {“error”:“file_exists”,“reason”:“无法创建数据库,文件已存在。”}
这可以认为validation_doc_update.js中的验证仅在更新文档期间执行
要证明这一点我尝试更新文档没有标题,期望它会返回错误,但令人惊讶的是文档刚刚保存
所以这是我关于上面提到的所有要点的问题
validate_doc_update.js“validate”是否仅在文档更新期间起作用
if YES
then
how can I manage to succeed in updating a post without the error [Weird bypassing the Validation Completely] . + How can execute validation on create of a document
if NO
then
What is the Error {"error":"file_exists","reason":"The database could not be created, the file already exists."} that is prevent a document to be saved
任何人都可以分享一下这里列出的所有问题
答案 0 :(得分:2)
是的,validate_doc_update函数仅在更新文档时运行(包括创建和删除)。
您在此处显示的功能将允许没有标题的文档,只要其类型不是“发布”。如果您可以包含您尝试的实际请求,我可以确认。
最后,“”无法创建数据库“是因为你正在尝试创建数据库(通过执行PUT / dbname /而不是PUT / dbname / docid,我猜),当它已经存在时。如果您要包含实际请求,我也可以确认。