我有这个代码
app.get("/api/tables", function(req, res) {
function retrieve() {
connection.query("SELECT * FROM reservations", function(err, res) {
if (err) throw err;
return res;
});
}
res = retrieve();
console.log(res,"results");
return res;
});
它从表中选择所有内容,然后为express.js函数设置一个res等于该函数,但结果未定义。 我该如何解决?
答案 0 :(得分:0)
这些node.js操作是异步,但是您将它们视为同步。在查询运行之前和回调函数运行之前,您的retrieve()
函数return
会调用它的调用者。
您需要这样的东西:
app.get("/api/tables", function(req, res) {
function retrieve(){
connection.query("SELECT * FROM reservations", function(err, resultset) {
if (err) {
console.log (err);
res.status(500).send('query error')l
}
else {
console.log (resultset);
res.status(200).send(JSON.stringify(resultset);
}
});
}
retrieve();
}
重点是将查询结果从回调内部发送回请求的客户端。