我已经为自定义查询语言构建了一个自定义查询服务器。
我尝试创建一个带有视图的设计文档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必须成功才能保存设计文档,因此无法保存设计文档。
我可能需要提出一个错误跟踪器问题。