Firebase函数-删除父项

时间:2018-08-27 22:31:07

标签: javascript firebase firebase-realtime-database google-cloud-functions

我不确定我是否正确执行了此操作。

如果节点内的变量参数为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的用户,上述代码还可以吗?

1 个答案:

答案 0 :(得分:1)

您似乎希望onUpdate处理函数的第一个参数是DataSnapshot对象,但事实并非如此。 onUpdateonWrite处理函数的第一个参数是一个Change对象,其中包含beforeafter字段,这些字段描述了触发位置之前的数据库位置。和触发它的变化。这些字段是带有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();
    }
});