CouchDb得到帖子作者

时间:2016-11-10 06:00:40

标签: couchdb

我的帖子文档如下所示:

{
   _id: ...,
   type: 'post',
   title: ...,
   description: ...,
   author: 'user_id'
}

另一个用户文档:

{
    _id: 'user_id',
    type: 'user',
    name: ...,
}

如果我只知道帖子ID ,我如何获取帖子和链接的用户文档?

在帖子文档中包含用户文档似乎不是一个好的解决方案,就好像用户更改了他/她的名字或其他细节一样,我将不得不更新每个帖子。

另一种解决方案是在用户文档中包含posts数组,并在视图文档中使用两个emits。但由于频繁发帖和帖子数量很多,这看起来效率不高。

1 个答案:

答案 0 :(得分:1)

你提到了#34;链接文件"好像你在CouchDB中引用了这个功能,但它看起来并不像你那样。

事实证明,这是totally supported。您的文档结构根本不需要更改,您可以使用这样的地图函数:

function (doc) {
  if (doc.type === 'post') {
    emit(doc._id)
    emit(doc._id, { _id: doc.author })
  }
}

通过发出一个_id属性作为值的对象,它允许CouchDB在您添加include_docs=true时查找与原始文档不同的文档(在本例中为用户文档)查看查询。这允许您在单个查询中获取整个相关文档集合!我引用了之前链接的文档作为完整的示例。 (他们的其他文档也很棒!)