微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在 setInterval 和 setTimeout 函数内部时,我的不和谐机器人从 mongoDB 返回的结果未定义?

如何解决为什么在 setInterval 和 setTimeout 函数内部时,我的不和谐机器人从 mongoDB 返回的结果未定义?

我正在尝试向我的不和谐机器人添加每小时命令。每小时它应该找到所有用户并向他们添加资金。当该命令不在 setinterval 或 settimeout 函数内时,它可以正常工作。但是,该命令需要每小时运行一次,因此 setInterval 命令是最佳选择。这是我的代码

const economy = require('./economy')
const profileSchema = require('./schemas/profile-schema')
module.exports = async client => {

        let J = 0
        
        var interval = setInterval (function () {
            profileSchema.find({

            }).exec(async (err,res) => {
                if (err) {
                    console.log(err)
                }
                console.log(res.length)
                if (res.length === 0) {
                    console.log('No users.')
                    return
                } else {
                console.log(res.length)
                    for ( i= 0; i < res.length; i++) {
                        const userId = res[i].userId
                        let hourly = await economy.hourlyIncome(userId)
                        await economy.addCoins(userId,hourly)

                        if (i < res.length) {
                            J = 0
                        }
                    }
                    // console.log('Done')
                }
                console.log('Done')
        
            })
        },3000); 
}

确切的错误说:

/Users/*******/discordFamilyBot/hourlyIncome.js:14
                console.log(res.length)
                                ^

TypeError: Cannot read property 'length' of undefined

我尝试将函数间接放入 setInterval 循环中,但即使这样也会出现相同的错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。