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



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

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

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

我可以看到有一个可以添加到设计文档中的 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失败,这意味着我无法保存设计文档。

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

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

如何干掉我的 CouchDB 视图?

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

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

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

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

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

最新更新