Couchdb 用视图模拟动态参数
考虑以下文档结构Couchdb 用视图模拟动态参数,couchdb,Couchdb,考虑以下文档结构 { _id, _rev, postTitle, postBody } 我正在编写一个小的nodeJS日志应用程序,我希望我的url能够反映帖子的标题。例如/WebLog/Posts/View/Hello World/ 既然除了_id属性之外,无法查询CouchDB,那么我为每篇文章创建一个视图,以便将postTitle映射到\u id,这有意义吗 除了\u id,您将如何查询其他文档属性 。。。我应该放弃使用MongoDB或MySQL吗?我对C
{
_id,
_rev,
postTitle,
postBody
}
我正在编写一个小的nodeJS日志应用程序,我希望我的url能够反映帖子的标题。例如/WebLog/Posts/View/Hello World/
既然除了_id属性之外,无法查询CouchDB,那么我为每篇文章创建一个视图,以便将postTitle
映射到\u id
,这有意义吗
除了\u id
,您将如何查询其他文档属性
。。。我应该放弃使用MongoDB或MySQL吗?我对CouchDB的要求太高了吗?请不要对每个帖子都做一个视图,这听起来很难维护。然而,您可以使用Django(与Couchdb一起使用)或Couchapp,两者都具有良好的url重写能力。另外,请查看couchone网站上的以下内容:
视图是如何在CouchDB中创建索引的。要通过
postitle
获取文档,请使用键为postitle
s的视图,并使用key=
和includedocs=true
对其进行查询
{
"views": {
"by-post-title": {
"map": "function(doc) { emit(doc.postTitle, null); }"
}
}
}
查询:GET//\u design/\u view/by post title?includedocs=true&key=“Hello World”
了解有关的详细信息。您已经部分回答了自己的问题,但是您将创建一个视图,正如前面的回答者所述
"views": {
"by-post-title": {
"map": "function(doc) {
if(doc.postTitle){
var titleURL = postTitle.split(" ").join("_");
emit(doc.titleURL, {"body" : doc.postBody, "title": doc.postTitle);
}
}"
}
}
现在,,
“Hello_World”将返回您的博文正文和博文标题
由于文档可以包含其他key:值,因此最好不要将整个文档作为emit调用中的第二个参数返回 这个答案没有说明问题中提到的结果URL的格式。添加一些与URL重写相关的内容,我将对此进行投票。:)@马特·帕塞尔:你是对的,我没有提到问题中提到的网址,但它们只是一个例子。我的理解是,这些URL将由node.js应用程序提供服务,它将在emit方法中依次查询CouchDB实例.Add}。