Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CouchDB博客应用程序_Couchdb - Fatal编程技术网

CouchDB博客应用程序

CouchDB博客应用程序,couchdb,Couchdb,我已经阅读了《CouchDB-权威指南》和网上的许多文章。 我已经了解沙发是如何工作的,但一些问题仍在我脑海中 假设使用一个简单的博客应用程序: 在post页面中,我想显示post的数据和作者的数据。 所以我想我必须把所有的东西都放在同一份文件里。 好啊 如果我只需要在一个页面中显示作者的数据,我可以使用视图来完成。 嗯 但是如果作者更新了他的数据,我需要更新作者出现的每个文档吗? 还是我错了 我真的很想理解这个逻辑 提前感谢。是的,您需要更新每个文档。这样的想法是,像这样的大更新是罕见的,所以

我已经阅读了《CouchDB-权威指南》和网上的许多文章。 我已经了解沙发是如何工作的,但一些问题仍在我脑海中

假设使用一个简单的博客应用程序: 在post页面中,我想显示post的数据和作者的数据。 所以我想我必须把所有的东西都放在同一份文件里。 好啊 如果我只需要在一个页面中显示作者的数据,我可以使用视图来完成。 嗯

但是如果作者更新了他的数据,我需要更新作者出现的每个文档吗? 还是我错了

我真的很想理解这个逻辑


提前感谢。

是的,您需要更新每个文档。这样的想法是,像这样的大更新是罕见的,所以即使它们在计算上很昂贵,你也不应该做很多

一些信息可以留在同一个文档中,在大多数情况下,这些信息都可以正常工作

{
    "title": "Blog Article Title",
    "content": "... blah blah blah ...",
    "author": {
        "name": "someguy",
        "email": "someguy@foo.bar"
    },
    "type": "post"
}
其他时候,您可以使用另一个文档的
\u id
,在这两个文档之间创建链接

{
    "_id": "...",
    "title": "Blog Article Title",
    "content": "... blah blah blah ...",
    "author": "someguy",
    "type": "post"
}

{
    "_id": "someguy",
    "name": "Some Guy",
    "email": "someguy@foo.bar",
    "type": "author"
}
乍一看,您需要两个单独的查询来检索这两个实体。然而,视图查询可以公开一个很好的小技巧

function (doc) {
    if (doc.type === "post") {
        emit([doc.title, 0], null);                // output the main post
        emit([doc.title, 1], { _id: doc.author }); // output the author
    }
}
您的视图将输出此结果:(注意视图的排序方式)

这并不是很有用,但如果将
include\u docs=true
添加到视图URL,您将得到以下结果:

{ ...
    "rows": [
        {
            "key": ["Blog Article Title", 0],
            "value": null,
            "doc": {
                "_id": "...",
                "title": "Blog Article Title",
                "content": "... blah blah blah ...",
                "author": "someguy",
                "type": "post"
            },
        },
        {
            "key": ["Blog Article Title", 1],
            "value": { "_id": "someguy" },
            "doc": {
                "_id": "someguy",
                "name": "Some Guy",
                "email": "someguy@foo.bar",
                "type": "author"
            }
        }
    ]
}
现在这两个实体都包含在1个查询中。:)


查看CouchDB中有关实体关系的更多信息。

Ok,谢谢。将作者的数据存储在一个单独的文档中并单独加载是否有意义?(在post文档中仅存储作者的id-SQL样式)
{ ...
    "rows": [
        {
            "key": ["Blog Article Title", 0],
            "value": null,
            "doc": {
                "_id": "...",
                "title": "Blog Article Title",
                "content": "... blah blah blah ...",
                "author": "someguy",
                "type": "post"
            },
        },
        {
            "key": ["Blog Article Title", 1],
            "value": { "_id": "someguy" },
            "doc": {
                "_id": "someguy",
                "name": "Some Guy",
                "email": "someguy@foo.bar",
                "type": "author"
            }
        }
    ]
}