0

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

我试图创建一个带有 views 的设计文档map/reduce

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

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

我期待自定义查询服务器接收add_lib来自 CouchDB 的消息,但我从未见过。

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失败,这意味着我无法保存设计文档。

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

如何将 moment.js 库添加到 Bluemix 上的 Cloudant NoSQL Design Doc

如何干燥我的 CouchDB 视图?

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

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

4

1 回答 1

0

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

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 必须成功才能保存设计文档,因此无法保存设计文档。

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

于 2018-09-25T22:49:54.820 回答