好吧,我不完全确定我做错了什么。
我必须做多个SQL查询,我真的不希望它们全部嵌套在一起。所以我正在尝试使用Async / Await,以便我可以将我的查询称为函数。
问题是,看起来我的功能在它继续之前没有完成,尽管我已经在前面写了等待。
如果我尝试调用“test”函数,它会将字符串“text”返回给控制台日志。
我还尝试在“get_all_events”函数前添加“async”。
我希望有人可以帮助我
const db_connection = require('../../helpers/db/db_config.js').connect_local()
module.exports = function (server) {
server.get('/events', async function(req, res, next) {
try {
var event_data = await get_all_events()
console.log("Try Catch CL: ", event_data)
res.render('public assets/pages/events', {
event_data : event_data
});
} catch (error) {
}
}
);
}
function test(){
return "test"
}
function get_all_events () {
let sql_get_all_events = `
SELECT event_id, event_name, event_text, event_dateStart, event_dateEnd, event_imagePath, type_id, type_name, type_text, type_imagePath, type_color,seating_id
FROM
((tb_events
INNER JOIN
tb_event_types ON type_id = fk_event_type)
INNER JOIN
tb_seating ON seating_id = fk_seating)`
db_connection.query(sql_get_all_events, function (error, event_data) {
if (error)
throw(error)
else
return event_data
});
}
答案 0 :(得分:0)
Async / await仅在您返回承诺时有效。
db_connection.query(sql_get_all_events, function (error, event_data) {
if (error)
throw(error)
else
return Promise.resolve(event_data)
});
看看是否有效。
答案 1 :(得分:0)
您需要从Promise
函数返回get_all_events()
才能await
:
function get_all_events() {
let sql_get_all_events = `...`;
return new Promise((resolve, reject) => {
db_connection.query(sql_get_all_events, function (error, event_data) {
if (error) {
return reject(error);
}
resolve(event_data);
});
})
}