我不确定我是否正确执行了此操作。
如果节点内的变量参数为true,我想删除节点的父级。
这就是我拥有的:
exports.removePost = functions.database
.ref('posts/{locationId}/{postId}/score')
.onUpdate(async snapshot => {
const score = snapshot.after.val();
if(score < -4)
return false;
if(score >= -4)
return snapshot.ref.parent().remove();
return false;
});
所以score
是一个整数,如果它等于或大于-4 onUpdate
,我想删除父对象,所以{postId}
。
我猜这是可能的。但是当我尝试在上面部署代码时,它说ref does not exist on type 'Change<DataSnapshot>'.
为什么这么说?
还有一个附带的问题-如果我设置Firebase安全规则,以便只有与uid
的{{1}}具有相同postId
的用户,上述代码还可以吗?
答案 0 :(得分:1)
您似乎希望onUpdate处理函数的第一个参数是DataSnapshot对象,但事实并非如此。 onUpdate和onWrite处理函数的第一个参数是一个Change对象,其中包含before
和after
字段,这些字段描述了触发位置之前的数据库位置。和触发它的变化。这些字段是带有ref
字段的DataSnapshot个对象。
如果您希望更改位置的参考,请尝试以下操作:
exports.removePost = functions.database
.ref('posts/{locationId}/{postId}/score')
.onUpdate(async change => {
const score = change.after.val();
if (score < -4) {
return null;
}
else {
return change.after.ref.parent.remove();
}
});