如何在 CouchDB 中同时发出两个单独的文档?



在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]});
} 
}
}
}

相关内容

  • 没有找到相关文章

最新更新