我想更改标签格式,我从其中一个集合中获取。 标签数据包含在阵列中的一些KC IDS里面我是用得到KC数据和TagUnit插入得到最终响应的格式。节点for循环回调所需
var newTags = Tags.map(function(TagUnit) {
for (var i = 0; i < TagUnit.kcs.length; i++) {
KCArray = [];
KC.findById(TagUnit.kcs[i], function(error, data) {
KCMap = {};
KCMap['kc_id'] = data._id;
KCMap['kc_title'] = data.title;
KCArray.push(KCMap);
if (KCArray.length == TagUnit.kcs.length) {
TagUnit.kcs = KCArray;
}
});
}
return TagUnit;
});
response.send(JSON.stringify(newTags));
但我没有得到期望的结果。响应发出标签数据在初始而不是格式化的形式。我想这是由于事件循环。如果有人能帮助我,我将不胜感激。
**编辑:**我使用MongoDB作为数据库和猫鼬作为ORM。
你看过[promise](http://www.html5rocks.com/en/tutorials/es6/promises/?redirect_from_locale=de)吗?你说得对,你的问题是由事件循环引起的。当调用'response.send'时,'newTags'不会被最完全计算。 – markusthoemmes