Я пытаюсь загрузить локальный пакет PouchDB с результатами веб-сайта. Как только результаты загружаются локально, я не хочу беспокоиться о том, что вы загружаете их снова.pouchDB получить всеDocs исходный запрос
Чтобы избежать этого, я получаю список существующих файлов, а затем проверяю, загружал ли я его в прошлом, прежде чем извлекать его.
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);
});
}
Проблема, которую я имею пока что к тому времени DownloadFile
ПОЛУЧИТЬ Называется 100 раз и allDocs
запрос, наконец, возвращается что-то, я уже не знаю, что первоначальный запрос, который не дал результатов.
Есть ли способ в PouchDb определить параметры запроса, которые использовались для создания заданного набора результатов?
EDIT: Хотя мне действительно нравится принятый ответ, похоже, это был немой вопрос. Эксперимент (в браузере) указывает, что $query
и $fname
будут содержать правильное облачное значение для конкретного вызова, инициировавшего вызов allDocs
.
Другими словами, мне не нужно ничего делать, это просто работает. Очевидно, что это сильно зависит от реализации JS, поэтому принятый ответ лучше, потому что он явно о желании.
Меня часто поражает темное волшебство, которое представляет собой область видимости переменной javascript, и множество странных сценариев, которые она обрабатывает. –