ノードリーフジョブ/ {jobid}/proposalsの変更を監視しています。提案を削除すると、その機能が実行され、提案が再挿入されます(これは予想される動作です)。 問題は、親の{job}を削除すると、親のIDが同じ新しいオブジェクトにプロポーザルが再挿入されることです。親が存在するかどうかチェックする方法はありますか?そうであれば、そうでない場合は提案を再挿入します。Firebaseのクラウド機能削除されたノードのモニタリーフ親が存在するかどうかをチェック
exports.RecountProposals = functions.database.ref("/jobs/{jobid}/proposals").onWrite(event => {
const jobid = event.params.jobid;
if (!event.data.exists() && event.data.ref.parent.exists()) {
const propRef = admin.database().ref(`proposals/${jobid}`);
const counterRef = event.data.ref;
const collectionRef = counterRef.parent.child('proposals');
// Return the promise from counterRef.set() so our function
// waits for this async event to complete before it exits.
return propRef.once('value')
.then(messagesData => collectionRef.set(messagesData.numChildren()));
}
});
親が存在する場合、私がチェックしていますが、それはエラー表示されます。
event.data.ref.parent.exists()
例外TypeError:event.data.ref.parent.existsは
ありがとう、ノードリーフが関数によって監視/監視されており、親が削除されている場合ノードトリガを監視する関数は、トリガする必要がありますか? –
はい、一致するパスの* anything *が変更された場合、関数がトリガします。新しいノード、変更された値、および削除されたノードがすべてトリガーされます。あなたが与えた道からの眺めのように、親についてはそれほど重要ではありません。 –