Javascript for和foreach循环的JS节点问题

Javascript for和foreach循环的JS节点问题,javascript,mysql,node.js,foreach,console.log,Javascript,Mysql,Node.js,Foreach,Console.log,这真的让我很困惑,直到4天前,一切都正常工作,没有问题发生,但当我的两个cron守护进程作业停止工作时,问题开始了 我没有考虑过这一点,决定重新构建代码并稍加改进,因为自从文件第一次编码以来,我获得了更多的洞察力 问题是: 这台机器在本地机器上正常工作 Object.keys(res).forEach(function(key) { const row = res[key]; client.channels.get(row.forchannel).send({ embed }

这真的让我很困惑,直到4天前,一切都正常工作,没有问题发生,但当我的两个cron守护进程作业停止工作时,问题开始了

我没有考虑过这一点,决定重新构建代码并稍加改进,因为自从文件第一次编码以来,我获得了更多的洞察力

问题是:

这台机器在本地机器上正常工作

Object.keys(res).forEach(function(key) {
    const row = res[key];
      client.channels.get(row.forchannel).send({ embed });
      console.log(row.forchannel);
});
这一个也是:

res.forEach(function(row) {
      client.channels.get(row.forchannel).send({ embed });
      console.log(row.forchannel);
});
for (let i = 0; i < res.length; i++) {
     console.log(res[i]);
     client.channels.get(res[i].forchannel).send({ embed });
}
还有这个:

res.forEach(function(row) {
      client.channels.get(row.forchannel).send({ embed });
      console.log(row.forchannel);
});
for (let i = 0; i < res.length; i++) {
     console.log(res[i]);
     client.channels.get(res[i].forchannel).send({ embed });
}
for(设i=0;i
我遇到的问题是,当我上传到live server时,它们中的任何一个都不起作用,当我在live上从循环中注销控制台时,MySQL查询的结果就在那里,而在live上从循环中注销控制台时,除了我发布的最后一段代码之外,什么都没有显示,这将返回一个结果

本地计算机是运行节点v11.6的windows,live是运行节点v11.12的Ubuntu

综上所述:

在live server上,上面这些循环不起作用,当控制台在循环外部记录数据时,我可以返回数组,但只有在最后一个服务器上,当控制台在循环内部记录数据时,才会显示任何数据

在本地计算机上,一切都按预期工作,在这两种情况下,错误捕获报告
null
,因此没有错误

res.map((result) => {
 client.channels.get(result.forchannel).send({ embed });
});

这可能对你有帮助

我发现了问题所在,尽管我的bot既有订阅选项又有取消订阅选项,但我的代码并不能满足显而易见的需求:一个不和谐的服务器管理员删除了一个频道,这会在数据库中留下一行,当反馈到循环中时返回false,因为频道不再存在并停止自动发布

在通过数组进行处理之前,工作代码首先检查通道是否确实存在

res.map((result) => {
    if (client.channels.has(result.forchannel)) {
         client.channels.get(result.forchannel).send({ embed });
    }
});

client.channels.has
检查频道是否存在,因为它在if语句中只会继续在返回true的频道上发布。

谢谢,结果完全相同,只是为空,在live server上没有发生任何错误或任何事,块内的控制台日志也不会返回任何内容,但我还是在本地机器上运行了它,它运行得很好。您是否希望从
client.channels.get(…)
方法中得到一些结果?预期的结果是循环的结果被发布到discord服务器上的文本频道。服务器所有者订阅他们的一个文本频道,该频道的id保存在MySQL中,进行查询,然后当更新可用时,bot将向订阅的频道发送消息(仅当bot在订阅的服务器上处于活动状态时)。频道id中的硬编码工作正常,就像我说的,直到几天之后一切都正常<代码>https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/frequently-asked-questions.md#channels-和公会