使用Couchdb查询服务器时视图中的lib

时间:2018-09-25 21:11:29

标签: couchdb-2.0

我已经为自定义查询语言构建了自定义查询服务器。

我尝试创建具有视图map/reduce的设计文档。

在那些map/reduce函数中(最重要的是在map函数中),我希望能够引用库代码。

我看到有一个lib节点可以添加到设计文档中。

我希望自定义查询服务器能够从CouchDB接收add_lib消息,但是我从未见过。

http://docs.couchdb.org/en/stable/query-server/protocol.html#add-lib

add_fun消息因依赖查询服务器中的库的代码而失败,因为尚未预先收到add_lib消息。

  

“查询服务器应解析,编译和评估其功能   接收以便以后调用。”

http://docs.couchdb.org/en/stable/query-server/protocol.html#add-fun

由于add_fun失败,这意味着我无法保存设计文档。

我已经查看了以下页面,但仍然没有成功:

How do I add the moment.js library to Cloudant NoSQL Design Doc on Bluemix

How do I DRY up my CouchDB views?

https://www.oreilly.com/library/view/couchdb-the-definitive/9780596158156/ch05.html

我做错了或似乎犯了一个错误,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

以下网站具有将lib放入视图的正确方法。

https://caolan.org/posts/commonjs_modules_in_couchdb.html

这是基于工作语言的虚拟语言的新示例。

{
  "_id": "_design/example",
  "language": "customlang",
  "views": {
    "lib": {
      "math": "pi = 3.14"
    },
    "map_everything_to_pi": {
      "map": "imports math; pi"
    }
  }
}

之所以出现问题,是因为在依赖库的map函数中有代码时,我无法保存设计文档。

通过将map函数调整为不依赖于库,我现在已经能够保存文档,并且在查询视图时,我目睹了add_lib消息被发送到查询服务器。

在CouchhDB 2.2.0中,查询视图时发送add_lib,但是在保存设计文档(在其中调用add_fun时)时不会立即发送。在我看来,应在CouchDB发送add_fun消息之前为每个库调用add_lib。

这个事实使add_fun无法评估/预编译代码,因为该库尚不为人所知。 add_lib必须成功才能保存设计文档,因此无法保存设计文档。

我可能需要提出一个错误跟踪器问题。