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