繁体   English   中英

NodeJS-Events.js无法读取每个未定义的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM