Sof*_*com 3 firebase firebase-realtime-database google-cloud-functions
我在Firebase上有一个像这样的结构:
members
|- -kSjJSDFjl2DFc
|- isDeleted: true
|- gender: "male"
Run Code Online (Sandbox Code Playgroud)
在我的云功能中,我写道:
exports.doMemberDeletion = functions.database.ref("/members/{memberId}/isDeleted").onWrite(event => {
const isDeleted = event.data.val();
if (isDeleted) {
const gender = event.data.ref.parent.child("gender").val; // Error here
console.log("Deleted a " + gender + " member");
}
});
Run Code Online (Sandbox Code Playgroud)
但是,它会出错event.data.ref.parent.child().val,请告知如何在这种情况下获取值.谢谢!
Bob*_*der 10
事件数据中提供的DeltaSnapshot仅用于匹配的位置.树或兄弟姐妹中较高的数据不可用.如果您的会员数据不是那么大,以至于您担心要监听其中任何一项的更改,您可以这样做:
// listen one level higher in tree
exports.doMemberDeletion = functions.database.ref("/members/{memberId}").onWrite(event => {
const wasDeleted = event.data.previous.child('isDeleted').val();
const isDeleted = event.data.current.child('isDeleted').val();
if (!wasDeleted && isDeleted) {
const gender = event.data.current.child('gender').val();
console.log("Deleted a " + gender + " member");
}
});
Run Code Online (Sandbox Code Playgroud)
您的原始方法也有效,但需要获取性别数据:
exports.doMemberDeletion = functions.database.ref("/members/{memberId}/isDeleted").onWrite(event => {
const isDeleted = event.data.val();
if (isDeleted) {
// as noted in Jen Person's answer, use adminRef for unrestricted access
return event.data.adminRef.parent.child('gender').once('value').then((snapshot) => {
console.log("Deleted a " + snapshot.val() + " member");
});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5742 次 |
| 最近记录: |