2017-03-20 6 views
1

シュリ​​ンクラップまたはヤーンを私のaws ubuntu 14.04マシンに使用しないと、私のクエリが正常に動作します。質問から来るデータのForeach定義されていない

しかし、同じクエリはローカルマシンのshrinkwrap/yarnでうまく動作しますが、どういうわけかawsマシンでは動作しません。

以下に示すように、クエリは次のとおりです。

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var foodtr = require('./../model/foodtruck'); 

var foodtrucklist = function(req, res) { 
    foodtr.find().populate('item_list').exec(function(err, foodtrucks) { 
     foodtrucks.forEach(function(ftr) { 
      var start_time = ftr.foodtruck_starting_timing; 
      var end_time = ftr.foodtruck_closing_timing; 
      var foodtruck_open_status = ftr.foodtruck_open_status; 
      // var shut_down = ftr.foodtruck_shutdown; 
      if ((start_time && end_time) && 
       (start_time.trim() != '' && 
        end_time.trim() != '')) { 
       if (inTime(start_time, end_time) && 
        foodtruck_open_status ==0) { 
        ftr.foodtruck_open_status = 0; 
        ftr.save(); 
       } else { 
        ftr.foodtruck_open_status = 1; 
        ftr.save(); 
       } 
      } 
     }) 

     res.json({ 
      status: '200', 
      message: 'foodtrucklist', 
      data: foodtrucks 
     }); 
    }); 
}; 

私は取得していますエラーは次のとおりです。

events.js:160 
     throw er; // Unhandled 'error' event 
    ^

TypeError: Cannot read property 'forEach' of undefined 
    at /home/bitnami/quflipNodeAPI/controller/foodtrucklist.js:9:19 
    at /home/bitnami/quflipNodeAPI/node_modules/mongoose/lib/query.js:2745:9 
    at newTickHandler (/home/bitnami/quflipNodeAPI/node_modules/mpromise/lib/promise.js:234:18) 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
    at process._tickDomainCallback (internal/process/next_tick.js:122:9) 

答えて

0

あなたがエラーを処理する必要があります。

foodtr.find().populate('item_list').exec(function(err, foodtrucks) { 
    // INSERT ERROR HANDLING HERE 
    foodtrucks.forEach(function(ftr) { 

例えば:

foodtr.find().populate('item_list').exec(function(err, foodtrucks) { 
    if (err) { 
     console.log('ERROR:', err); 
     return res.status(500).json({ error: err }); 
    } 
    foodtrucks.forEach(function(ftr) { 

errが定義されていない場合(errまたはfoodtrucksのいずれか)に定義されているため、foodtrucksにアクセスする必要があります。エラーをチェックしないと、定義されていないデータにアクセスすることがあり、このようなエラーが発生します。

関連する問題