私はデータベースから照会された非同期関数investedList
を持っており、結果をデータベースから変更しています。データベース結果名 - campaignList
は、javascriptオブジェクトの配列です。for-eachループが約束通りに送信される配列を生成するまで、約束を送るのを止めることができます
私は配列を横断して、このオブジェクトをいくつか変更したいと思っています。私は、トラバースしてオブジェクトcampaignList
を変更することができますが、私はループのプロセスで - defered.resolve()
の間で動作するいくつかの約束として、配列全体を送信することができません。
どうすればいいのですか?
var invest = require('../models/investment');
var Q = require('q');
var CampaignDao = require('./campaignDao');
var _ = require('underscore');
module.exports.investedList = function(data){
var defered = Q.defer();
var projection ={
_id : false,
campaignId : true,
amountInvested : true,
tokensRecieved : true,
campaignName : true
}
invest.find({investorId:data.userId},projection,function(err,campaignList){
if(err){
defered.reject(err);
}else{
var arr =[];
_.each(campaignList,function(obj){
delete obj._id;
});
_.each(campaignList , function(obj){
id=obj.campaignId;
var temp={
campaignId: obj.campaignId,
campaignName: obj.campaignName,
amountInvested: obj.amountInvested,
tokensRecieved: obj.tokensRecieved
};
CampaignDao.commonInfo(id)
.then(function(data){
temp.country = data.project.projectCountry;
temp.domain = data.project.domain;
temp.city = data.project.city;
temp.amountRaised = data.campaign.amountRaised;
arr.push(temp);
}).catch(function(err){
defered.reject(err);
});
});
defered.resolve(arr);
}
});
return defered.promise;
}
おかげ
を確認することができます。このコードの代わりに[最小で完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成できますか? –