我尝试在一个对象上封装两个查询响应,然后在函数return上使用该对象
app.get('/gerais',(req,res) => {
const client = new Client();
const data = new Object();
client.connect()
.then(() => {
data.result1 = client.query('SELECT * FROM student');
data.result2 = client.query('SELECT * FROM adress');
return data;
})
.then((results) => {
console.log('results?',results);
res.render('geral-info',results);
});
});
但在终端打印中显示“结果”:
results? { result1: Promise { <pending> }, result2: Promise { <pending> } }
如何进行调整,以便可以用每次查询中返回的实际字符串填充此“待处理”?
答案 0 :(得分:2)
client.query()
返回一个Promise,而不是查询结果。因此,您需要知道该承诺何时达成,以便从承诺中获取数据。
如果您有两个承诺(您要执行),并且想知道它们都在何时完成,则可以使用Promise.all()
。当其他两个promise都解决时,这将返回一个新的promise,该promise将解析为结果数组:
client.connect()
.then(() => {
return Promise.all([client.query('SELECT * FROM student'), client.query('SELECT * FROM adress')])
})
.then((results) => {
console.log('results?',results);
// res.render('geral-info',{something from the results});
});