0
answerDataArray
という空の配列を宣言し、値を配列にプッシュしました(値はfirebase DBのスナップショットです)。私がconsole.log(answerDataArray)
をforEach
の外側に使用すると、それは空の配列を示しますが、私がのどこかのどこかでループすると、配列が生成されます。ここで起こっていることを教えてください。値をプッシュした後でも空の配列が返される
var ideationContestRef = ideationDataRef.child(contestDataRef.key);
ideationContestRef.once("value", function(snapshot){
if(snapshot.child("answers").exists()){
snapshot.child("answers").ref.once("value", function(snapAnswerKey){
var answerKey = Object.keys(snapAnswerKey.val());
var answerDataRef = db.ref("answerData");
var answerDataArray = [];
answerKey.forEach(function(key){
answerDataRef.child(key).once("value", function(snapAnswerData){
answerDataArray.push(snapAnswerData.val());
});
});
console.log(answerDataArray);
// res.render("ideation", {id: contestId, layout: 'styled.handlebars', page: 'ideation', user_logged_in: user_presence, contestData: snapshot.val(), answerDataArray: answerDataArray});
});
}
どうすればいいですか? – venkatesh
この関数をPromiseベースに変換する必要があります。こちらをご覧ください。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise – felixmosh