[英]NodeJS - Events.js cannot read property forEach of undefined
自2天以来我一直面临一个问题,我不知道该如何解决。 我在forEach上出错,因此我的应用程序运行良好,然后停止运行而没有任何重复。
这是发生错误的代码。
var easy = setInterval(function(){
keywords.forEach(function(k) {
tweetModel.find({keyword: k}).sort({date: -1}).limit(20).exec(function(err, data) {
var score = [];
var date = [];
console.log(data);
console.log(err)
data.forEach(function (item) {
score.push(Math.floor(parseFloat(item.score) * 1000) / 1000);
date.push(item.date.getDate()+'/'+parseInt(item.date.getMonth() + 1)+'/'+item.date.getFullYear()+':'+parseInt(item.date.getHours() + 1)+':'+item.date.getMinutes());
tArrayStats[k] = score;
tArrayStats['date'] = date;
});
});
});
io.sockets.emit('stats',tArrayStats);
},3000);
错误抛出在这里
data.forEach(function (item)
但是我不知道为什么! 感谢您的帮助。
根据要求,有控制台日志数据的输出:
通过@Ids van der Zee编辑工作代码
var easy = setInterval(function(){
keywords.forEach(function(k) {
tweetModel.find({keyword: k}).sort({date: -1}).limit(20).exec(function(err, data) {
if (data && !err)
{
var score = [];
var date = [];
console.log(data);
console.log(err)
data.forEach(function (item) {
score.push(Math.floor(parseFloat(item.score) * 1000) / 1000);
date.push(item.date.getDate()+'/'+parseInt(item.date.getMonth() + 1)+'/'+item.date.getFullYear()+':'+parseInt(item.date.getHours() + 1)+':'+item.date.getMinutes());
tArrayStats[k] = score;
tArrayStats['date'] = date;
});
}
});
});
io.sockets.emit('stats',tArrayStats);
},3000);
在线上:
tweetModel.find({keyword: k}).sort({date: -1}).limit(20).exec(function(err, data) {
您正在尝试查找与关键字k对应的数据,您正在为每个关键字执行此操作。 如果tweetModel不包含关键字,则您正在寻找的数据变量将是未定义的。 您可以通过检查数据是否未定义来解决此问题。 代替
data.forEach(function (item){...
if(data){
data.forEach(function (item){...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.