我的 CouchDB 位于子目录中。我应该列出啥作为摇篮主机?

Posted

技术标签:

【中文标题】我的 CouchDB 位于子目录中。我应该列出啥作为摇篮主机?【英文标题】:My CouchDB is in a sub directory. What should I list as the cradle host?我的 CouchDB 位于子目录中。我应该列出什么作为摇篮主机? 【发布时间】:2011-06-01 18:01:01 【问题描述】:

我的 CouchDB 数据库位于此目录中:

http://example.com/couchdb/

例如,我在这里有一个 CouchDB 数据库“foo”:

http://example.com/couchdb/foo/

我应该在底座设置功能中将什么列为“主机”?

cradle.setup(host: '[what goes here]',
          options: cache: true, raw: false);

以上示例来自:https://github.com/cloudhead/cradle

我无法让 cradle 看到我的数据库...

【问题讨论】:

是否有任何“前缀”或类似选项?我在其他 couchdb 库中见过 prefix。对不起,我对摇篮不熟悉(继续学习)。 感谢 jhs,但我没有看到任何前缀选项。 无赖。这就是为什么我个人不喜欢使用 CouchDB 客户端而使用 HTTP 的原因。 (在 NodeJS 中,我喜欢 Mikeal 的 request 模块。但是我听说 Cradle 很不错。 只是为了确保您的 数据库 中有斜线,例如some/database,或者整个 CouchDB API 是否嵌入(例如通过反向代理)在 URL 内的命名空间中?谢谢! jhs:我的数据库在这里:example.com/couchdb/my_database(my_database 中没有斜杠)...不确定您需要关于嵌入式部分的内容。 【参考方案1】:

尝试将主机的 IP 地址添加为底座主机选项。

【讨论】:

IP 地址无效。我从“new (cradle.Connection)”中完全删除了主机选项,现在它可以工作了。 @edt:那么您可能只在 CouchDB 端口上监听来自 localhost 的连接,因为这是默认选项。【参考方案2】:

Longshot,我不相信这会奏效。我看了看 Cradle 源代码,它做了很多字符串连接来构建它的许多查询。

尝试将路径添加到数据库名称,这样您将使用数据库couchdb/foo 而不是/foo。至少对于数据库查询(希望是文档、视图、附件以及该路径中的所有内容)它可能会起作用。

var cradle = require('cradle');
var db = new(cradle.Connection)().database('couchdb/foo');
db.get("some_docid", function(err, doc) 
    if(err) throw err;
    console.log("I got the doc!");
)

对不起,我没有前缀沙发设置来直接测试这个。欢迎投反对票,更欢迎编辑!

【讨论】:

以上是关于我的 CouchDB 位于子目录中。我应该列出啥作为摇篮主机?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 couchdb 中键的值

如何在CouchDB中实现唯一键约束

couchdb 更改通知

Erica CouchDB 重写

java中方法没有返回值用啥作返回类型

如何按字段对文档进行分组并使用带有 CouchDB 视图的自定义 reduce 函数列出不相等的值