簡體   English   中英

異步/等待問題(返回未定義)mongoose

[英]async/await issue (returns undefined) mongoose

當我調用方法interval時,我從方法allUserStats得到的參數user總是未定義的。 這是方法

const interval = async () => {
    const allUsers = await getAllUser();
    for (const u of allUsers) {
            let user;
            let followerScore;
            let subscriberScore;
            //let hostsScore;
            let viewerScore;
            await getAllUserStats(u.login_name).then(async (userStats)=>{
                user = userStats;
...

getAllUserStats 方法如下所示:

const getAllUserStats = async (login_name) => {
    await userstats.findOne({login_name}).then(async(userStats)=>{
        if(userStats===null){
            let user = new userstats({
                login_name:login_name,
                followers: [],
                subscribers: [],
                hosts: [],
                viewers: []
            })
            await user.save();
            return user;
        }
        else{
            return userStats;
        }
    })
}

我認為這是一個異步等待問題,但我不知道。 有什么建議我可以解決這個問題嗎?

您正在混合 async/await 並使用promise.then - 您可以使用async/await來編寫所有內容,這樣會更容易:

 const getAllUserStats = async (login_name) => { const userStats = await userstats.findOne({login_name}) if(userStats===null){ let user = new userstats({ login_name:login_name, followers: [], subscribers: [], hosts: [], viewers: [] }) await user.save(); return user; } else{ return userStats; } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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