0
私のクラウド機能を正常に終了するためにすべてのfirebaseの結果をループした後、どのようにしてリターンを得ることができますか?node.jsのforEachから戻り、firebaseの結果をループします。
var count = 0;
return ref.child('/records').once('value').then(snap=>{
snap.forEach(snapChild=>{
var ucName = ${snapChild.val().name.toUpperCase();
var update = {'name':ucName);
ref.child(`/records/${snapChild.key}`).update(update).then(()=>{
count++;
res.write(`<p>${ucName} updated</p>`);
});
})
}).then(()=>{
return res.end(`<p>end of list (${count} records)</p>`);
})
それは実際に行うことになっているものを行いますが、カウンタは0のままと私は「末端の後に書き込み」エラーを取得する - 私はforEachのから欠落しているの復帰のためにね。
私はそれに答え@alexmacあなたの問題とは無関係な質問を持っている:あなたは約束の配列を生成するために、そして
Promise.all
をすべての約束が解決されないまで待機するArray#map
を使用する必要があります。なぜES6(太い矢印)を使うのですが、 'const'と' let'を使わないのですか? –あなたは正しいです - 私はucNameと更新のために持っているはずです - 間違いありません。 カウントについてはそれほど明確ではありません - それは '定数'ではありません。私はfirebase、雲の関数、ノード、nodemailer、ハンドルバー、認証、ポリマー、PWAなどで "完成"した後でそれを読んでおく必要があります) –
'count'は、 'count ++'、それは 'let'です。 'ucName'と' update'は変更されず、 'const'です。論文との幸運techs :) –