一般的に私は問題の内容を知っていますが、解決方法はわかりません。CouchDB slow List-Function
私は、単純なマップ機能を持っている:マップ関数の結果に基づいて
function(doc) {
if(doc.Type === 'Mission'){
for(var i in doc.Sections){
emit(doc._id, {_id:doc.Sections[i].id});
}
}
}
、私はいくつかの書式設定を行うには、リスト機能を使用します。
function(head,req){
var result=[];
var row;
topo = require('lib/topojson');
while(row=getRow()){
if (row !== null) {
if(row.value._id){
row.doc.Geometry.properties.IDs.Section_ID = row.value._id;
}else{
row.doc.Geometry.properties.IDs.Section_ID = row.value;
}
geojson = {
type: "Feature",
geometry: row.doc.Geometry.geometry,
properties: row.doc.Geometry.properties
};
result.push(geojson);
}else{
send(JSON.stringify({
status_code: 404
}));
}
}
send(JSON.stringify(result));
}
複数のドキュメントmap-functionにマッチしている場合は、リスト関数を使って処理するのに時間がかかります。制限要因はcouchjsビューサーバーです。最初に、map関数の結果をシリアル化しなければならない。その後、リスト関数が作業を行うことができる。
私が書いたように、少量のドキュメントでは処理時間が劇的ではなく、ドキュメントの量が増加するにつれてリスト関数による処理時間も増加するため、
結果をフォーマットする方法を改善するアイデアはありますか? クライアントに作業をさせる方が良いですか?
ねえ、あなたはいくつかの非常に役に立つヒントを投稿しました! – Sceada