pouchDB 检索 allDocs 原始查询
pouchDB retrieve allDocs original query
我正在尝试使用来自网站的结果加载本地 PouchDB。一旦结果加载到本地,我就不想再次下载它们了。
为了避免这种情况,我得到了一个存在的文件列表,然后在获取它之前测试我是否加载过它。
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
查询最终 returns 时,我不再知道返回的原始查询是什么没有结果。
PouchDb 中是否有一种方法可以确定用于生成给定结果集的查询参数?
编辑:虽然我真的很喜欢接受的答案,但看起来这是一个愚蠢的问题。实验(在浏览器中)表明 $query
和 $fname
将包含启动 allDocs
调用的特定调用的正确范围值。
换句话说,我真的不需要做任何事情,它只是有效。显然,这高度依赖于 JS 实现,因此接受的答案更好,因为它明确了所需的内容。
这与 PouchDB 无关,它是一种可用于各种类似情况的解决方案。
下面的答案假设您有一个有效的 Promise
对象。
function DownloadFile($fname){
$query = {
include_docs: false,
attachments: false,
startkey: ['run',$fname].join(','),
endkey: ['run',$fname,'\uffff'].join(',')
};
return Promise.all([
$query,
db.allDocs($query),
]).then(function (resp) {
// you'll have your query right here.
var $query = resp[0]
var result = resp[1]
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);
});
}
我正在尝试使用来自网站的结果加载本地 PouchDB。一旦结果加载到本地,我就不想再次下载它们了。
为了避免这种情况,我得到了一个存在的文件列表,然后在获取它之前测试我是否加载过它。
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
查询最终 returns 时,我不再知道返回的原始查询是什么没有结果。
PouchDb 中是否有一种方法可以确定用于生成给定结果集的查询参数?
编辑:虽然我真的很喜欢接受的答案,但看起来这是一个愚蠢的问题。实验(在浏览器中)表明 $query
和 $fname
将包含启动 allDocs
调用的特定调用的正确范围值。
换句话说,我真的不需要做任何事情,它只是有效。显然,这高度依赖于 JS 实现,因此接受的答案更好,因为它明确了所需的内容。
这与 PouchDB 无关,它是一种可用于各种类似情况的解决方案。
下面的答案假设您有一个有效的 Promise
对象。
function DownloadFile($fname){
$query = {
include_docs: false,
attachments: false,
startkey: ['run',$fname].join(','),
endkey: ['run',$fname,'\uffff'].join(',')
};
return Promise.all([
$query,
db.allDocs($query),
]).then(function (resp) {
// you'll have your query right here.
var $query = resp[0]
var result = resp[1]
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);
});
}