一种方法是使用 WPCoder 的想法和include_docs=true
查询来获得响应:"value": { book_id:"123456", name:"Peace and War", pages:"2234" }, "doc": {_id:34567, surname:"Tolstoy", name:"Leo" }
. 我会那样做。
如果你真的不喜欢include_docs
你也可以试试map:
if (doc.author_id) {
emit([doc.author_id, doc._id], doc);
} else
// check if author
if (doc.surname && doc.name) {
emit([_id, 0], doc);
}
现在带有选项的查询?startkey=["author id"]&endkey["author id", {}]
将返回作者的书籍列表。您可以过滤您的书并将其合并到带有列表的单个对象中,但您必须先验地知道作者(使用关键字而不是作者搜索)。
您也可以使用keys=[["author id", 0], ["author id", "book id"]]
,但您必须知道作者和书籍 ID。这完全取决于你需要它做什么。我再重复一遍:我会使用 WPCoder 的建议。