2017-05-11 22 views
2

我有这个代码工作,但非常依赖于查询参数。每个查询都基于请求参数。如何通过sql数组来承诺

var query1P = connection.execute("SELECT * FROM C"); 

var query3P = connection.execute("SELECT * FROM A"); 

Promise.all([query1P query3P]).spread(function (result, result3) { 
res.status(200).json({ table: result.rows, table3: result3.rows }); 
return connection.close(); 
}) 
.catch(function (err) { 
console.log(err.message); 
return connection.close(); 
}); 

如何传递查询数组中Promise.all像

queryArray = [query1P,query2P,query3P]

,并获得满意的结果回到阵。有什么可以通过queryArray循环的承诺?

感谢

+0

不要传递数组字面值,不要使用'spread'而不是'then'? – Bergi

回答

0

虽然我注意到有query1P和query3P之间没有逗号你Promise.all()电话这应该自动发生(此外,.spread()应替换为.then()

Promise.all(['test', 'blah']) 
 
    .then(function(responses) { 
 
     console.log(responses); 
 
    })

只需将'test'和'blah'替换为最终解决的实际承诺即可。

+0

我可以这样做吗?'Promise.all([array]) .then(function(responses){console.log(responses); })' – user557657

+0

准确地说。传递给.then()函数的第一个参数是传递给.all()方法的请求响应的数组。 –