我的目标是将两个文档链接在一起并取回其详细信息。通过地图功能(CouchDB)连接两个文档的问题
什么是您的CouchDB文档?
汽车
{
"_id": "car.123",
"type": "car",
"name": "Tesla",
"model": "Semi Truck"
},
{
"_id": "car.456",
"type": "car",
"name": "Tesla",
"model": "Roadster"
}
厂商
{
"_id": "manu.123",
"type": "manufacturer",
"name": "Tesla Inc.",
"cars": ["car.123", "car.456"]
}
应该如何,结果是什么样子?
这里我想使用一个List-Function并生成一个HTML表格作为结果。
Name (Manufacturer) | Name (Car) | Model (Car)
------------------- | ---------- | ----------------
Tesla Inc. | Tesla | Semi Truck
Tesla Inc. | Tesla | Roadster
你卡在哪里?
我很难在包围地图函数的时候环顾我的头。这是据我得到了尚未:
function(doc) {
if (doc) {
// Give me the ID and the name of the manufacturer
emit(doc._id, doc.name);
// Check if the document has at least one car in its array
if (doc.cars < 0) {
// Give me for every car their details (eg. name & model)
for (var i in doc.cars) {
emit(doc.name, {_id: doc.cars[i]});
}
}
}
}
我使用的查询:
ID | Key | Value
-------- | ---------- | ---------------
manu.123 | Tesla Inc. | [object Object]
manu.123 | Tesla Inc. | [object Object]
用这个表:
http://localhost:5984/my-db/_design/my-design/_view/my-view?key="Tesla Inc."&include_docs=true
从列表功能结果功能:
function(head, req){
start({
'headers': {
'Content-Type': 'text/html'
}
});
send('<html><body><table>');
send('<tr><th>ID</th><th>Key</th><th>Value</th></tr>')
while(row = getRow()){
send(''.concat(
'<tr>',
'<td>' + row.id + '</td>',
'<td>' + row.key + '</td>',
'<td>' + row.value + '</td>',
'</tr>'
));
}
send('</table></body></html>');
}
的JSON输出:
{
"total_rows": 10,
"offset": 8,
"rows": [
{
"id": "manu.123",
"key": "Tesla Inc.",
"value": {
"_id": "car.123"
},
"doc": {
"_id": "car.123",
"_rev": "1-7291266e7f81917fef1d0cfa104a39ca",
"type": "car",
"name": "Tesla",
"model": "Semi Truck"
}
},
{
"id": "manu.123",
"key": "Tesla Inc.",
"value": {
"_id": "car.456"
},
"doc": {
"_id": "car.456",
"_rev": "1-c5c67f5d5abeda1b77c02f003ec72a9f",
"type": "car",
"name": "Tesla",
"model": "Roadster"
}
}
]
}
什么是您的具体问题?
如何将[object Object]
替换为我车的实际值(例如名称&型号)?
我已经进行了以下的资源,但他们并没有帮助我:
CouchDB's Linked Documents in a View
couchdb views tied between two databases?
combine multiple documents in a couchdb view
Couchdb join two documents using key
CouchDB's Linked Documents in a View
Best way to do one-to-many "JOIN" in CouchDB