Couchdb 和沙发帮助

Posted

技术标签:

【中文标题】Couchdb 和沙发帮助【英文标题】:Couchdb and Sofa Help 【发布时间】:2011-09-24 07:02:05 【问题描述】:

几周前我是 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":"无法创建数据库,文件已存在。"

这让人相信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  

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

【问题讨论】:

【参考方案1】:

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

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

最后,“无法创建数据库”是因为您正在尝试创建数据库(我猜是通过执行 PUT /dbname/ 而不是 PUT /dbname/docid)。再次,如果您将实际请求包括在内,我也可以确认。

【讨论】:

点接受@Robert 但还有一些事情还不清楚 [1.] 上述错误 "error":"file_exists", "reason":"无法创建数据库,文件已经存在” 是在我在“沙发”应用程序中创建新的“帖子”记录时生成的,而不是在创建新数据库时生成的,因为我知道如果有人尝试创建已经存在的数据库,则会出现上述错误存在,但是在创建记录时产生错误很奇怪,所以你能分享更多关于它的信息 [2.] 如果 validate_doc_update.js 在创建过程中也验证记录,那么如何在沙发应用程序中应用验证以确保在没有标题的情况下不创建任何帖子,如果标题相同,则不会生成错误在创建帖子时未提供简短的验证在创建帖子期间被绕过。

以上是关于Couchdb 和沙发帮助的主要内容,如果未能解决你的问题,请参考以下文章

如何在couchdb中插入数据以进行跨域

在 CouchDB 中链接文档

从 CouchDB Show Function 发出 AJAX 请求

在 Couchdb 中订购

ios 的 couchdb 中的身份验证

限制在 couchdb 中匿名删除文档