Firebaseの関数イベントの理解が不足しています。私の機能を意図どおりに機能させるためには、参照パスにさらに細かく追加し、必要と思われます。Firebase関数onCreate()onDelete()パスの特異性
例えば、私は数に子を追加したり、このパスから削除されるたびにインクリメントまたはデクリメントします:
/invites
私はこれを達成するために私の関数としてこれらを使用:
を:
functions.database.ref('/invites').onCreate(event => { return admin.database().ref('/counter').transaction((current) => { return (current || 0) + 1; }) }); functions.database.ref('/invites').onDelete(event => { return admin.database().ref('/counter').transaction((current) => { if (current >=1) return (current - 1); else return; }) });
Thisは私が上で私のパスをベースとするものですパスの指定は、その下のどこかで発生する書き込みを含め、パスに接触するすべての書き込みに一致します。あなたがfoo /バー/としてあなたの関数のパスを設定した場合、それはこれらの場所の両方でのイベントに一致します
/fooの/バー
/fooの/バー/バズ/本当に/深い/パス
私の場合、/invites
は、その例では/bar
に相当します。
しかし、上記の関数は、最後に削除された子だけでなく、/invites
に追加された最初の子にも発生します。これらの2つの条件の外では、何もカウンタ機能を起動しません。私はこの作品を作ることができた唯一の方法は、私の道としてこれを使用することです:
invites/{idOfInvite}
私はこれが仕事と理解している間、私はこれは私が必要とする正確に何であることを知りません。後で私は特定の{idOfInvite}
のパスの下に新しいデータを追加することに決めました。それは私のカウンター機能を起動させるでしょう(私は思っていますか?)。
このSO answerは、私の関数の動作が期待されていることを示していますが、ドキュメントの理解に基づいて期待するものではありません。おそらく私はドキュメントを間違って解釈しているのでしょうか?
あなたが分かるように、これらのイベントの追加/削除の仕組みについて私が理解しているところは多少オフです。