在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
我尝试删除Dominic建议的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]});
}
}
}
答案 0 :(得分:0)
我假设您要发布国家/地区文档以及链接的城市文档?
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]});
}
}
}
}