2015-03-25 3 views
0
exports.getCityCascade = function (req, res) { 
var result = {}; 
Province.find().exec(function (err, provinces) { 
    result.provinces = provinces; 
    var provinceCount = 0; 
    async.whilst(
     function() { 
      return provinceCount < provinces.length 
     } 
     , function (callback) { 
      City.find({province: provinces[provinceCount].id}).exec(function (err, cities) { 
       if (err) { 
        callback(err); 
       } else { 
        result.provinces[provinceCount].cities =cities; 
       } 
       provinceCount++; 
       callback(null , result); 
      }); 
     }, function (err, result) { 
      if (err) return res.jsonp({message: err.message}); 
      return res.jsonp({ 
       status: '200', 
       results: result}); 
     } 
    ) 
}) 
} 

Когда я добавляю поле cities в провинции, похоже, не работает. орган ответа не содержит поданную cities. Как это исправить? Любой совет будет очень полезен.Как добавить поле в результат запроса мангуста?

+2

Где вы наращиваете 'provinceCount'? Я имею в виду, выглядит как бесконечный цикл. –

+0

Спасибо, что напомнил мне. Я исправил его только сейчас. –

ответ

1

Проблема только конфликт между именами переменных: вы объявили var result вне Province.find(), но async.whilst() также использует result в качестве второго аргумента своей функции обратного вызова. Просто переименуйте один из них, и он должен работать.

Смежные вопросы