1

几周前我是Couchdb的新手,我 git 克隆了名为sofa [what and app] 的 couchdb 应用程序。整个星期都很顺利,但今天突然间我偶然发现了一些东西。

当我浏览 Sofa 应用程序并尝试创建一个没有标题的帖子时,我的意思是这里 提示和警告框“无法保存文档:无法创建数据库,文件已存在。” 这很奇怪,因为查看源代码我发现需要(在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","re​​ason":"The无法创建数据库,文件已存在。"}

这让人相信validation_doc_update.js中的验证只在更新文档时执行

为了证明这一点,我尝试更新没有标题的文档,期望它会返回错误,但令人惊讶的是文档刚刚被保存

所以这是我关于上面提到的所有观点的问题

validate_doc_update.js“验证”是否仅在更新文档期间工作

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  

谁能分享一下这里列出的所有问题

4

1 回答 1

2

是的,validate_doc_update 函数仅在更新文档时运行(包括创建和删除)。

只要其类型不是“发布”,您在此处显示的功能将允许没有标题的文档。如果您可以包含您尝试的实际请求,我可以确认它。

最后,“无法创建数据库”是因为您正在尝试创建数据库(通过执行 PUT /dbname/ 而不是 PUT /dbname/docid,我猜)它已经存在。同样,如果你愿意包括实际请求,我也可以确认。

于 2011-09-24T12:01:16.520 回答