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}。