Pouchdb如何在for循环中查询?

时间:2016-05-11 20:17:10

标签: pouchdb

我在Pouchdb中有关于db.query的问题。我想查询for循环。但是当我的for循环块完成时,我的查询代码开始运行(db.query)。 我的代码:

var db = new PouchDB('http://127.0.0.1:5984/parameterResult');
        var parameterArr=['101','102','103'];
for (var x=0;data.length-1;x++ ){ //1. for loop 
        db.query('test/newView',{include_docs:true , startkey: [     "1001",     data[x],     "2016-05-05"   ],
        endkey:  [     "1001",     data[x],     "2016-05-05"+"\u9999"   ] }).then(function (result) {
         //   debugger;
            for (var i=0;i<result.rows.length;i++) {
                data.push(result.rows[i].value[0]);
            }
        });
}

总结:在我的代码中,当我的第一个循环行完成时,我的db.query()启动。 谢谢。

1 个答案:

答案 0 :(得分:1)

每个查询响应看起来都会返回一个promise。既然您对所有结果集做了同样的事情,那么如何使用 Promise.all

来自docs的示例:

Promise.all([p1, p2, p3]).then(function(values) { 
  console.log(values); // [3, 1337, "foo"] 
});

所以在你的情况下,做这样的事情

var promises = [];

for (var x=0;data.length-1;x++ ){

promises.push(db.query('test/newView',{include_docs:true , startkey: [     "1001",     data[x],     "2016-05-05"   ],
        endkey:  [     "1001",     data[x],     "2016-05-05"+"\u9999"   ] }))

}

Promises.all(promises).then(function(values){
//Do stuff
});