2017-04-12 15 views
0

私は2日以来問題に直面しており、解決方法を見つけることができません。私はforEachでエラーが発生しているので、アプリケーションがうまく動作し、解読なしで停止します。NodeJS - Events.jsはプロパティを読み取ることができません未定義

ここにエラーが発生したコードを示します。

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ファンデへ

enter image description here

EDITED作業コード、感謝ジーライン上

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); 
+1

2行の'、それの出力は何ですか? –

+0

私の投稿を出力で更新しました。その後、エラーがなくなり、 "undedifned"が得られました。私はtwitからデータを受け取っています –

+0

あなたが示したデータは配列内のオブジェクトであるようです---> [{}] – codemax

答えて

2

としては、コンソールログデータの出力がある尋ね

tweetModel.find({keyword: k}).sort({date: -1}).limit(20).exec(function(err, data) { 

あなたキーワードkに対応するデータを検索しようとしている場合は、キーワードごとにこれを行います。 tweetModelに探しているキーワードが含まれていない場合、データ変数は未定義です。データが未定義でないかどうかをチェックすることでこれを解決できます。代わりにあなたが `にconsole.log(データ)は、その部分の前に

data.forEach(function (item){...

if(data){ 
     data.forEach(function (item){... 
+0

ええ、このようなものを見つけ出しました、私はツイートの中にすべてを入れました。モデルif(data &&!err)でそれが良いはずです!ご協力いただきありがとうございます ! –

関連する問題