[英]nodejs async parse and modify list of json object from mongodb
在節點應用程序中,從貓鼬查詢中,我嘗試在每個結果的對象上添加一個新值。
Sscategory.find({}, null, {sort:{'system_name':1}}, function (err, sscategories) {
var i = 0;
async.each(sscategories, function(sscategory, err) {
Marker2sscategory.count({'_sscategory' : sscategory._id}, function(err, count) {
if (err) return console.log(err);
sscategories[i].markerNumber = count;
i++;
});
});
console.log(sscategories);
});
問題是我的對象沒有改變...計數查詢中的值“ markerNumer”沒有出現在我的“ sscategories”對象列表中。
這是日志:
[ { name_fr: 'Aménagement de locaux',
name_en: 'Aménagement de locaux',
system_name: 'amenagement_de_locaux',
_id: 52fe27664139302d2c151449,
__v: 0,
uptade_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET),
create_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET) },
{ name_fr: 'Animaux domestiques',
name_en: 'Animaux domestiques',
system_name: 'animaux_domestiques',
_id: 52fe27664139302d2c15144b,
__v: 0,
uptade_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET),
create_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET) },
{ name_fr: 'Architecte',
name_en: 'Architecte',
system_name: 'architecte',
_id: 52fe27664139302d2c15144e,
__v: 0,
uptade_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET),
create_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET) },
{ name_fr: 'Restaurant',
name_en: 'Restaurant',
system_name: 'restaurant',
_id: 52fe27664139302d2c151451,
__v: 0,
uptade_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET),
create_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET) },
{ __v: 0,
_id: 52fe27664139302d2c15145b,
name_de: 'aarrrr',
name_en: 'Service de traiteur',
name_fr: 'Service de traiteur',
system_name: 'service_de_traiteur',
uptade_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET),
create_date: Fri Feb 14 2014 15:25:42 GMT+0100 (CET) } ]
感謝您的幫助。
解決 ! 我在異步系統上工作不好。
因此,好的方法是在瀑布中使用異步庫,並對async.each使用回調。
此代碼有效:
var countMarker = function(sscategory, callback) {
Marker2sscategory.count({'_sscategory' : sscategory._id}, function(err, count) {
if (err) return console.log(err);
callback(null, count);
});
};
async.waterfall([
function(callback) {
// select sub categories
Sscategory.find({}, null, {sort:{'system_name':1}}, function (err, sscategories) {
callback(null, sscategories);
});
},
function(sscategories, callback) {
var arr = [];
// for each subcategory, count markers
async.each(sscategories, function(sscategory, callback) {
countMarker(sscategory, function(err, count) {
if (err) return console.log(err);
sscategory.markerNumber = count;
arr.push(sscategory);
callback();
});
}, function(err) {
callback(null, arr);
});
}
], function(err, result) {
console.log(result); // final result, can render in template here
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.