我在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()启动。 谢谢。
答案 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
});