临时视图有效,/ mydb / _design / mydesigndoc / _view / myview没有。为什么?

时间:2013-08-05 16:57:49

标签: javascript couchdb kanso

嗨!

一般来说,Web开发的新手,特定于couchdb。

现在我尝试了解如何调用视图。我有相当简单的文档生成并通过基于Simplest possible form found on Kan.so的应用程序提交到我的数据库,我在Futon中尝试了不同的视图。一切安好。然后我尝试在设计文档中创建一个视图,并从代码中调用。无济于事。

即使这样一个简单的视图如下所示在临时视图中也是正确的:

function(doc) {
if (doc.type == 'person') {
    emit(doc._id, doc);
   }
};

但请加入lib/views.js这样的文件(仅添加exports.map_type =):

exports.map_type = function(doc) {
if (doc.type == 'person') {
    emit(doc._id, doc);
   }
};

即使从浏览器中的地址字段调用也不会工作,如下所示:

http://localhost:5984/simplestpossibleform/_design/my_form/_view/map_type

结果如下:

{"error":"unknown_error","reason":"function_clause"}

因此,函数子句出了问题。好吧,我看不到它。代码是从Futons临时视图中复制粘贴的。当我从下拉列表中尝试视图时,它会在从设计文档剪切和粘贴到Futon中的临时视图时出错。也许还有其他错误,只是想不出来。

请有人帮助我吗?

(在couchdb 1.2上运行,Kanso 0.3.1)

1 个答案:

答案 0 :(得分:2)

我已经回答了我自己的问题。而且它再次非常基本。

所以, if 我希望couchdb为view提供一些东西必须告诉它是map还是{reduce {1}}。我没有。这是简单(和令人尴尬)的解决方案:

exports.map_type = {
map: function(doc) {
    if (doc.type == 'person') {
        emit(doc._id, doc);
    }
  }
};

无论如何,我从错误中吸取了教训。我希望其他人也可以利用我的ramblings ......