【问题标题】:pouchDB retrieve allDocs original querypouchDB 检索 allDocs 原始查询
【发布时间】:2016-07-22 06:09:51
【问题描述】:

我正在尝试使用来自网站的结果加载本地 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 get 被调用 100 次并且 allDocs 查询最终返回了一些东西时,我不再知道原始查询没有返回任何结果。

PouchDb 中是否有办法确定用于生成给定结果集的查询参数?

编辑:虽然我真的很喜欢被接受的答案,但这似乎是一个愚蠢的问题。实验(在浏览器中)表明$query$fname 将包含启动allDocs 调用的特定调用的正确范围值。

换句话说,我真的不需要做任何事情,它就可以工作。显然,这高度依赖于 JS 实现,因此接受的答案更好,因为它明确说明了所需的内容。

【问题讨论】:

  • 我经常对 javascript 变量作用域的黑暗魔法以及它处理的大量奇怪场景感到惊讶。

标签: pouchdb


【解决方案1】:

这和 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);
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多