我试过阅读 CouchDB 文档,但我发现它在这方面有点含糊(FAUXTON,vhost 规范)。我已经搜索并阅读了 stackoverflow 上“couchdb vhosts”和“couchdb rewrite url”的响应,并尝试应用我可以在那里收集的建议。仍然坚持这一点,如果有人能提供它,将不胜感激一些具体的方向。
我在一个 couchDB 数据库中有大约 1900 个文档。每个文档都有一个“类型”键。我制作了 30 个设计文档,每个“类型”一个。每个设计文档都有一个名为“all”的视图,它返回该类型文档的所有行。
在下面的信息中,dasvm01.com 不是实际的服务器。它位于公司防火墙后面,外界无法访问。我一直在尝试使用它,如果我在任何地方出错,请原谅我。
所以,现在我可以从浏览器执行这样的 GET:
dasvm01.com:5984/registryservice/_design/airplaneidtypes/_view/all
我的直接目标是将其缩短为:
dasvm01.com:5984/registryservice/airplaneidtypes
或者
dasvm01.com:5984/registryservice/airplaneidtypes/all
为此,我在 planeidtypes 设计文档中添加了一个 rewrites 函数:
{
"_id": "_design/airplaneidtypes",
"_rev": "11-c28b41a718017cbcd65f82f4acc611cb",
"views": {
"all": {
"map": "function (doc)
{ if(doc.ddoc === 'airplaneidtypes')
{ emit(doc._rev,doc); }
}"
}
},
"language": "javascript",
"rewrites": [
{
"from": "/airplaneidtypes",
"to": "registryservice/_design/airplaneidtypes/_rewrite",
"method": "GET"
}
]
}
现在我认为我需要更新 CouchDB daemon:vhosts 设置:我尝试了一下,但我真的没有信心,而且它似乎不起作用。在福斯顿,我有:
daemons
auth_cache {couch_auth_cache, start_link, []}
...
vhosts {dasvm01.com:5984, /registryservice/_design/airplaneidtypes/_rewrite, []}
不确定这是否是: - 关闭, - 远离, - 不是正确的地方, - 只需要引号......
你能告诉我什么?我不明白 Fauxton 中的符号默认试图传达:
vhosts
Virtual hosts manager. Provides dynamic add of vhosts without restart, wildcards support and dynamic routing via pattern matching
[daemons]
vhosts={couch_httpd_vhost, start_link, []}
最终,我希望/希望允许用户在 URL 上传递多个键:值对,然后将它们重写为 MANGO 查询。用户会传递这样的东西:
dasvm01.com:5984/registryservice/airplaneidtypes/model/A320/variant/251N
这将被重写为 MANGO 查询:
{
"selector": {
"model": "A320",
"variant": {"$eq": "251N"}
},
"fields": [
"_id",
"_rev",
"status",
"model",
"variant",
"variant-type",
"oem",
"historicaloem",
"displaymodel",
"actsmodel"
]
}