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

How to emit two separate documents concurrently in 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

我尝试按照 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]});
          } 
    }
}

我假设你想发出国家文件加上链接的城市文件?

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