CouchDB returns";不求值为函数;

CouchDB returns";不求值为函数;,couchdb,Couchdb,我有这个密码 { "_id": "_design/test", "_rev": "10-651aa6314effdad0bca00fc4a3da38f6", "views": { "foo": { "map": "(function(doc){ emit(doc._id, doc._rev)})" }, "bar": { "map": "(function(doc){if(doc.da

我有这个密码

 {
    "_id": "_design/test",
    "_rev": "10-651aa6314effdad0bca00fc4a3da38f6",
    "views": {
       "foo": {
           "map": "(function(doc){ emit(doc._id, doc._rev)})"
       },
       "bar": {
           "map": "(function(doc){if(doc.date && doc.title) {emit(doc.date, doc.title);})"
       }
      }
    }
为什么会返回一个:

表达式不求值为函数。((新字符串(((函数(doc){if(doc.date&&doc.title){emit(doc.date,doc.title);})”)


我知道这个问题很老,答案实际上在问题的评论中,但似乎应该有一个公布的答案

函数的最后一个大括号丢失。缩进后,它看起来如下所示:

function(doc) {
  if (doc.date && doc.title) {
    emit(doc.date, doc.title);
  }
}
请注意单行版本中末端的两个大括号:

function(doc){if(doc.date && doc.title){emit(doc.date, doc.title);}}

我更喜欢缩进并使用空格,所以我不会错过这些东西。

它可能在字符串的最开始处查找
函数
。尝试删除函数周围的括号。您还缺少右大括号。删除或添加括号不是解决方案。