onWriteハンドラでは、複数の読み込みを実行し、いくつかのデータを操作してから保存したいと思います。私はPromiseコンセプトをかなり新しくしています。 Firebaseが完了する前に私の質問を殺していないという点に関して、私は次の約束の取扱いで安全ですか?Firebaseのクラウド関数:約束をシリアライズ
exports.test = functions.database.ref('/zzz/{uid}').onWrite(event => {
console.log('zzz', event.data.val());
return Promise.all([
admin.database().ref('/zzz/1').once('value'),
admin.database().ref('/zzz/2').once('value')
]).then(function(snaps) {
console.log('loaded', snaps[0].val());
var updKeys = {
["/xxx/" +event.params.uid +"/zoo"]: 'giraffe',
}
admin.database().ref().update(updKeys, function(error) {
console.log("Updating data finished. ", error || "Success.");
})
});
});
上記の作品ではなく、必ずその正しい方法...
なぜあなたが 'スナップ[1]'を使っていないときに '/ zzz/2'をリクエストしているのか不思議です...? –
これは単なるテストです - 取り出されたデータの実際の(誤った)使用には気をつけないでください(またはハードコードされたuidを使用している醜い事実) – jazzgil
'onWrite'コールバックから返ってきた約束が解決されています**最後に 'update'が完了する前に。それが意図的でない場合は、約束事を作成し、 'then'から返し、' update'コールバックで解決する必要があります。 –