ウェブサイトの結果をローカルPouchDBにロードしようとしています。結果がローカルに読み込まれたら、もう一度ダウンロードしても構いません。pouchDB allDocs元のクエリを取得します。
これを避けるには、存在するファイルのリストを取得してから、それをフェッチする前に過去にロードしたかどうかをテストします。
function DownloadFile($fname){
$query = {
include_docs: false,
attachments: false,
startkey: ['run',$fname].join(','),
endkey: ['run',$fname,'\uffff'].join(',')
};
db.allDocs($query).then(function (result) {
if (result.rows.length !== 0) return;
$url = './runDb/' + $fname + '/results.xml';
$.ajax({
url: $url,
type: "GET",
dataType: "xml",
contentType: "text/xml",
async: true,
success: function (results,status,xhr) {
app.ParseResults($fname,results)
}
});
}).catch(function (err) {
console.log(err);
});
}
私が午前問題はallDocs
クエリが最終的に何かを返す時間DownloadFile
取得者と呼ばれる100倍と、私はもはや結果が返されなかったことを、元の何のクエリを知っているということではありません。
与えられた結果セットを生成するために使用されたクエリパラメータをPouchDbで判断する方法はありますか?
編集:私は受け入れられた答えが本当に好きですが、これはばかな質問だったようです。実験(ブラウザ)は、と$fname
には、allDocs
コールを開始した特定のコールに対して有効な有効範囲の値が含まれていることが示されています。
つまり、私は本当に何もする必要はありません、それはちょうど動作します。明らかに、これはJSの実装に大きく依存しているので、受け入れられた答えは、何が望ましいかを明示しているので、より良いものになります。
私はしばしばjavascriptの変数スコープである暗い魔法と、それが扱う奇妙なシナリオで驚いています。 –