couchdb:设计文档中的map给出了compilation_error

时间:2012-01-27 13:56:53

标签: couchdb

我在Debian测试中使用Couchdb 1.1.1

我在数据库中有这个设计文档

{
 "_id": "_design/Page",
 "_rev": "9-1944cdebabf20ae569eab7b534b43e67",
 "views": {
     "all": {
         "map": "function(doc) {}"
     }
 },
 "language": "javascript"
}

但我仍然进入http://localhost:5984/db_development/_design/Page/_view/all

{"error":"compilation_error","reason":"Expression does not eval to a function. ((new String(\"function(doc) {}\")))"}

我尝试在spidermonkey-bin解释器中运行不同的简单映射函数,并且它们已正确加载,但在couchdb中出现相同的错误

我真的无法看到问题出在哪里......

好的,在邮件列表中我发现需要将函数包装到括号"()",因为在较新的spidermonkey中发生了一些变化

因此map函数如下所示:"map": "(function(doc) { emit([doc._id, doc._rev]);})"

3 个答案:

答案 0 :(得分:10)

好的,在邮件列表中我发现需要将函数包装到括号“()”中,因为更新的spidermonkey中的某些内容已经发生了变化

因此map函数如下所示:“map”:“(function(doc){emit([doc._id,doc._rev]);})”

答案 1 :(得分:0)

如果出现此错误,请注意设计文档的结构是否正确。 (由于我的shows定义中出现了一个愚蠢的错误,我收到了这样的消息。)

另外,不确定这是一个问题,但我认为在函数定义的大括号之前应该没有空格。

答案 2 :(得分:-3)

map函数中没有return语句。你的地图功能需要返回一些东西。

如果您需要获取所有文档的原始转储,则有一个内置功能:http://wiki.apache.org/couchdb/HTTP_Document_API#all_docs