当我调用方法 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 问题,但我不知道。有什么建议可以解决这个问题吗?
答案 0 :(得分:1)
您正在混合使用 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;
}
}