gpt4 book ai didi

CouchDB 博客应用

转载 作者:行者123 更新时间:2023-12-04 22:36:31 27 4
gpt4 key购买 nike

我已阅读“CouchDB - 权威指南”以及网上的许多文章。
我已经了解 Couch 的工作原理,但我的脑海中仍有一些问题。

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

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

我真的很想理解这个逻辑。

提前致谢。

最佳答案

一些信息可以留在同一个文档中,并且在大多数情况下会很好地工作。

{
"title": "Blog Article Title",
"content": "... blah blah blah ...",
"author": {
"name": "someguy",
"email": "someguy@foo.bar"
},
"type": "post"
}

其他时候,您可以只使用另一个文档的 _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"
}

乍一看,您需要 2 个单独的查询来检索两个实体。但是, View 查询可以公开一个很好的小技巧。
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
}
}

你的 View 将输出这个结果:(注意 View 是如何排序的)
{ ...
"rows": [
{
"key": ["Blog Article Title", 0],
"value": null
},
{
"key": ["Blog Article Title", 1],
"value": { "_id": "someguy" }
}
]
}

这并不是那么有用,但是如果您将 include_docs=true 添加到您的 View 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 个查询中。 :)

查看 this article 以获取有关 CouchDB 中实体关系的更多信息。

关于CouchDB 博客应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com