Ich versuche, eine lokale PouchDB mit Ergebnissen von einer Website zu laden. Sobald die Ergebnisse lokal geladen sind, möchte ich sie nicht noch einmal herunterladen.pouchDB Abfrage allDocs ursprüngliche Abfrage
Um dies zu vermeiden, erhalte ich eine Liste der vorhandenen Dateien und teste dann, ob ich sie in der Vergangenheit geladen habe, bevor ich sie geholt habe.
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);
});
}
Das Problem, das ich habe, ist, dass durch die Zeit DownloadFile
get des gerufenen 100-mal und die allDocs
Abfrage endlich etwas zurückgibt, ich weiß nicht mehr, was die ursprüngliche Abfrage, die keine Ergebnisse zurückgegeben.
Gibt es in PouchDb eine Möglichkeit, die Abfrageparameter zu bestimmen, die zum Erstellen einer bestimmten Ergebnismenge verwendet wurden?
EDIT: Während ich die angenommene Antwort wirklich mag, scheint es, dass dies eine dumme Frage war. Experimentieren (im Browser) zeigt an, dass $query
und $fname
den korrekten Bereichswert für den bestimmten Anruf enthalten, der den Aufruf allDocs
ausgelöst hat.
Mit anderen Worten, ich brauche wirklich nichts zu tun, es funktioniert einfach. Offensichtlich hängt dies stark von der JS-Implementierung ab, daher ist die akzeptierte Antwort besser, weil sie explizit angibt, was gewünscht ist.
Ich bin oft erstaunt über die dunkle Zauberei, die JavaScript Variable Scoping ist, und die Fülle der seltsamen Szenarien, die es gerade behandelt. –