[英]async function with MySQL SELECT request returns [object Promise] but writes correct answer in console
我開始創建一個與 vk-io 模塊一起使用 MySQL 數據庫的機器人,但我遇到了一個我不明白的錯誤下面的 function 試圖從數據庫中提取一個值,它肯定存在。 該值甚至顯示在控制台中,但不顯示在代碼中。
async function getlastweek(){
connection.query('SELECT weekstartdate FROM schedule ORDER BY weekstartdate DESC LIMIT 1', async function(err, results) {
if(err) console.log(err);
console.log(String(results[0].weekstartdate).slice(0, 10))
return String(results[0].weekstartdate).slice(0, 10)
})
}
到目前為止,這個function在代碼中只用在了這個地方。
bot.hear(/^Добавить новую неделю$/, async (msg)=>{
if(msg.messagePayload){
if(msg.messagePayload.command === 'add week'){
vk.api.messages.send({
peer_id: msg.peerId,
random_id: (Math.random() * (9999999 - 1) + 1),
message: 'Последняя неделя была ' + getlastweek() + '\nСегодня ' + now
})
}else{msg.send('Команду вызывать надо через админку')}
}else{msg.send('Нее, эт так работать не будет')}
})
它在控制台中返回完全正常的文本:
Mon Aug 16
但返回
[object Promise]
進入代碼
我試圖在 inte.net 中找到答案,但沒有找到任何示例。
這是因為 function 是異步的。 Node 為您提供多線程,這意味着它不會等待上一行完成。 所以這就是為什么您的代碼返回 object promise
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.