如何解决为什么在 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 举报,一经查实,本站将立刻删除。