CouchDb 获得 post 作者

CouchDb get post author

我的 post 文档如下所示:

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

还有另一个用户文档:

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

鉴于 我只知道 post id,我如何获取 post 和链接的用户文档?

在 post 文档中包含用户文档似乎不是一个好的解决方案,因为如果用户更改 his/her 名称或其他详细信息,我将不得不更新每个 post .

另一种解决方案是在用户文档中包含一个 posts 数组,并在视图文档中使用两个发射器。但是由于频繁 posts 和大量 posts,这看起来有点低效。

你提到 "linked documents" 就好像你在 CouchDB 中引用了这个功能,但它看起来不像你的意思。

原来,这是totally supported。您的文档结构根本不需要更改,您可以使用这样的地图功能:

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

通过发出一个以 _id 属性 作为值的对象,它允许 CouchDB 在您添加 include_docs=true 在您的视图查询中。这允许您在单个查询中获取整个相关文档集合!我将参考我之前链接到的文档以获取完整示例。 (他们的其他文档也很棒!)