9

onWrite ハンドラーで、複数の読み取りを実行し、一部のデータを操作してから保存したいと考えています。私はPromiseの概念にかなり慣れていません。Firebase が完了する前にクエリを強制終了しないことに関して、次の Promise 処理で安全ですか?

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.");
        })
    });

});

上記は機能しますが、正しい方法かどうかはわかりません...

4

1 に答える 1