遇到CouchDB设计文档和validate_doc_update函数问题

时间:2013-01-11 21:39:41

标签: json couchdb

我是CouchDB的新手,我在设计文档在我的数据库中工作时遇到了很多麻烦。

这是我的设计文件:

{
"language": "javascript",

"validate_doc_update": "function(newDoc, oldDoc, userCtx) {
    function require(field, message) {
        message = message || "Document must have a " + field;
        if (!newDoc[field]) throw({forbidden : message});
    };
    function unchanged(field) {
        if (oldDoc && toJSON(oldDoc[field] != toJSON(newDoc[field])) {
        }
    };

    if (newDoc.type == "fortune") {
        require("body");
        require("sequence_id");
        require("created_at");
        unchanged("sequence_id");
        unchanged("created_at");
    }
};",

"views": { 
    "fortune_count": {
        "map": "function(doc) { if(doc.sequence_id && doc.body) { emit(doc.sequence_id, doc.body); }",
        "reduce": "_count"
        }
},

"shows": {
}
}

让我打破我遇到的问题:

  1. 我将此作为put请求发送到我的数据库时遇到问题。 显然这是无效的JSON。我不是JSON的专家,而且 这非常令人沮丧。有什么想法吗?

  2. 由于我对put请求的问题,我决定 使用Futon添加我的设计文档。我的数据库似乎没问题 与我在这里的视图,但当我尝试添加文件 数据库,我得到一个错误,说我的validate_doc_update文本 不评估函数。关于我的错误的任何建议 验证功能?

  3. 由于我在验证功能方面遇到困难,我尝试在设计文档中添加一个愚蠢的版本:

    "validate_doc_update": "function(newDoc, oldDoc, userCtx) { if (newDoc.type == "fortune") {} };",
    

    我可以使用此版本创建文档,但它没有多大用处。

    任何帮助都将不胜感激。

    谢谢,

    保罗尼科尔斯

1 个答案:

答案 0 :(得分:0)

您只是忘了在(oldDoc && toJSON(oldDoc[field] != toJSON(newDoc[field]))

中关闭括号