在CouchDB中,我想同时发出一个类型为country
和类型为city
的对象。这在一个函数中可能吗?
通过链接的文档,我可以发出一个对象值,该值{_id:doc.xxx}
如下:
function(doc) {
if (doc.cities) {
for (var i in doc.cities) {
emit(doc.name, {_id: doc.cities[i]});
}
}
}
下面的函数是我的建议,但它不起作用,因为永远不会到达第二个 if 部分。
function(doc) {
if (doc.type == 'country') {
emit(doc.name, null);
} else if (doc.cities) {
for (var i in doc.cities) {
emit(doc.name, {_id: doc.cities[i]});
}
}
}
文件:
// Country
{
"_id": "country.123",
"name": "France",
"type": "country",
"cities": [
"city.123"
]
}
// City
{
"_id": "city.123",
"name": "Paris",
"type": "city",
}
更新 1
我尝试按照多米尼克的建议删除else if
。不幸的是,现在什么也没发出。
function(doc) {
if (doc.type == 'country') {
emit(doc.name, null);
for (var i in doc.cities) {
emit(doc.name, {_id: doc.cities[i]});
}
}
}
我假设您要发出国家/地区文档以及链接的城市文档?
function(doc) {
if (doc.type == 'country') {
emit(doc._id, doc)
if (doc.cities) {
for (var i in doc.cities) {
emit(doc.name, {_id: doc.cities[i]});
}
}
}
}