簡體   English   中英

異步 function 與 MySQL SELECT 請求返回 [object Promise] 但在控制台中寫入正確答案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM