Reputation: 183
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});
}
)
})
}
When I add the cities
field to provinces, It seems doesn't work. the response body doesn't contain the filed cities
. How to fix it? Any advice would be very helpful.
Upvotes: 0
Views: 1061
Reputation: 7862
The problem is just a conflict between variable names: you declared a var result
outside Province.find()
, but the async.whilst()
also uses result
as the second argument of its callback function. Just rename one of them and it should work.
Upvotes: 1