我正在尝试在nodejs中创建一个基本的API来对数据库执行CRUD操作。 我不明白为什么结果是未定义的
exports.getPlaylist = async function (req, res) {
console.log('Recieved getPlaylist request');
result = await connection.executeQuery('SELECT * from Users');
res.status(200).send(result);
console.log(result); // Logs undefined
};
这是被调用并从数据库获取数据的函数:
async executeQuery(query) {
connection.query(query, function (err, result) {
if (err) {
console.log('Error executing query: ' + err);
}
console.log(result); // logs correct data
return result;
});
}
最佳答案
您需要“ promise ”您的回调。 (请参阅 require('utils').promisify
)了解应用于遵循 Node.js 回调样式的函数的简写 (function(err,result){}
)。
executeQuery(query) {
return new Promise((res, rej) => {
connection.query(query, function (err, result) {
if (err) {
console.log('Error executing query: ' + err);
rej(err)
} else {
console.log(result); // logs correct data
res(result);
}
});
});
}
现在,在async
函数中,您可以awaitexecuteQuery(query)
关于javascript - 使用nodejs在异步函数中使用await和async的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825412/