【问题标题】:lib in views when using couchdb query server使用 couchdb 查询服务器时视图中的 lib
【发布时间】:2018-09-25 21:11:28
【问题描述】:

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

我尝试创建一个包含视图 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

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

【问题讨论】:

    标签: couchdb-2.0


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      相关资源
      最近更新 更多