Есть 3 CouchDB типы документов:Как связать несколько документов в одном окне
пользователя
{ "_id: "user/author1", "type: "user", "name" : "Joe Doe"}
Обзор
{ "_id: "review/review1", "type" : "review", "content" : "..." }
Продукт
{ "_id": "product/awesomeproduct", "type" : "product", "reviews": [
{
"author": "author1",
"review_id": "review/review1"
},
{
"author": "author2",
"review_id": "review/review2"
}
]
}
Как я могу получить все данные из документов с единым представлением?
Я пытаюсь использовать связанные документы, но можно использовать (с include_docs = верно) только один на выделяют:
(coffescript)
(doc) ->
if doc.type is "product"
for review in doc.reviews
emit [doc._id, review.author],{_id: "user/" + review.author}
emit [doc._id, review.author],{_id: review.review_id}
Но я хочу что-то вроде этого (получить пользователя и обзор документа в одиночном испускании):
(doc) ->
if doc.type is "product"
for review in doc.reviews
key = [doc._id, review.author]
value = {"user:" {_id: "user/" + review.author},"review" :{_id: review.review_id}}
emit key, value
Есть ли способ, как его достичь? Как присоединиться к этим типам документов в едином представлении?
Я хочу, чтобы получить что-то вроде этого результата:
[
key : ["product/awesomeproduct", "author1"],
value : {user: {_id: "user/author1"},review :{_id: "review/review1"}}
doc:
{user: {"_id: "user/author1", "type: "user", "name" : "Joe Doe"},
review: {"_id: "review/review1", "type" : "review", "content" : "..."}
}
]
Ах-ха, хорошо. Я добавил еще один ответ ниже. –