Ethan Wu
Ethan Wu

Reputation: 183

How to add field to mongoose query result?

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

Answers (1)

Rodrigo Medeiros
Rodrigo Medeiros

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

Related Questions