【发布时间】:2013-01-12 17:20:44
【问题描述】:
我是 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": {
}
}
让我分解一下我遇到的问题:
我无法将此作为放置请求发送到我的数据库。 显然这是无效的 JSON。我不是 JSON 专家,而且 这非常令人沮丧。有什么想法吗?
由于我在 put 请求中遇到的问题,我决定 使用蒲团添加我的设计文档。我的数据库似乎很好 使用我在这里的视图,但是当我尝试将文档添加到 数据库,我收到一条错误消息,说我的 validate_doc_update 文本 不评估为函数。关于我的问题的任何建议 验证函数?
由于我的验证功能遇到困难,我尝试在设计文档中放置一个哑版本:
"validate_doc_update": "function(newDoc, oldDoc, userCtx) { if (newDoc.type == "fortune") {} };",
我可以使用这个版本创建文档,但它没有多大用处。
任何帮助将不胜感激。
谢谢,
保罗·尼科尔斯
【问题讨论】:
-
我很肯定其他人会有更好的答案,但我在放入设计文档时也遇到过类似的问题。我经常使用jsonlint.com 来清理我的 json 并验证它。在您的设计文档中粘贴指向第三行。我遇到了完全相同的问题,并编写了一个脚本来从我的 json 文本中删除制表符和回车符。那时我可以插入它!哈哈哈。此外,在使用 PUT 上传文档时,我的文件中有一个字节顺序标记,使其无效。去掉前三个字节就好了。
-
你的函数体内有
",它破坏了 JSON。您需要转义require(...)和unchanged(...)中的那些。即:require(\"body\");