Кажется, ваша функция "runQuery" не возвращает обещание, фактически она ничего не возвращает. Вы используете "return" в обратном вызове функции db.query, а не самой функции "runQuery".
Поскольку runQuery выполняет асинхронную операцию, результат должен быть разрешен с помощью обещания (которое является что ищет «await» в вашем обработчике запросов).
Я не совсем уверен, но, похоже, вы используете MySql, и я не смог найти ничего на странице npm mysql пакет, касающийся обещанного запроса, поэтому мы сами обещаем его:
const runQuery = (queryString) => new Promise((resolve,reject) => {
console.log("...runQuery")
db.query(queryString, (error, results, fields) => {
if (error) {
console.error("runQuery: FAILURE");
reject(error);
} else {
console.log("runQeury: SUCCESS");
resolve(results);
}
})
})
register.post("/", async (req, res) => {
console.log(req.body);
try{
const results = await runQuery("select * from test1");
res.send(results);
}catch(e){
console.error(`ERROR THROWN BY runQuery:`,e);
res.status(500).send({
message: e.message || "INTERNAL SERVER ERROR"
})
}
})
Обратите внимание, что в случае возникновения ошибки наша обещанная функция отклонит ошибку и НЕ будет сохранена в " Результаты »в нашем обработчике запросов. Вместо этого будет выдана ошибка, которую необходимо обработать. Следовательно, всегда хорошая практика - помещать любые асинхронные / ожидающие вызовы внутри try / catch.