CouchDB的取得帖子作者
问题描述:
我的后文件如下所示:CouchDB的取得帖子作者
{
_id: ...,
type: 'post',
title: ...,
description: ...,
author: 'user_id'
}
而另一个用户文档:
{
_id: 'user_id',
type: 'user',
name: ...,
}
如何抓的帖子和链接的用户文档因为我只知道帖子ID?
让用户文档在帖子文档中看起来不是一个好的解决方案,就好像用户改变他/她的名字或其他细节一样,我将不得不更新每篇文章。
另一种解决方案是在用户文档中包含posts数组,并在视图文档中使用两个发射。但由于帖子频繁和帖子数量多,这看起来有点低效。
答
您提到“链接的文档”,就好像您在CouchDB中引用此功能一样,但它并不像您这样表示。原来,这是totally supported。您的文档结构不需要做任何改动,就可以使用地图功能是这样的:
function (doc) {
if (doc.type === 'post') {
emit(doc._id)
emit(doc._id, { _id: doc.author })
}
}
所谓具有_id
属性作为值发光的物体,它允许CouchDB的查找不同的文件(在这种情况下,用户文档)比当您在视图查询中添加include_docs=true
时的原始文档更为重要。这使您可以在单个查询中获取完整的相关文档集合!我会参考前面链接到的文档以获得完整的示例。 (其他的文档也很棒!)
感谢您的回复。但是,我试过这个。但我没有收到作者文件。它将两次返回给我。 – pewpewlasers
其实现在它工作!奇怪的。我对非空值域做了同样的事情。可能是这个原因。谢谢回答我的问题。 couchdb的新功能。我已经通过文件,但有时对初学者来说有点压倒性。另外我认为在堆栈上的具体问题也不是一个坏主意。稍后找到更容易。感谢您抽出时间。 – pewpewlasers