我有一个带有许多指令和范围的角度代码,每个指令和范围都有自己对firebase数据的引用。我在firebase本身使用自定义身份验证和存储权限。
我的问题是:在某些时候我需要删除数据,然后删除它后我还需要删除相关的权限。所有这些在数据库和UI上工作正常,但我在控制台上得到了一堆权限错误,可能是因为某些范围仍在引用已删除的数据。
我注意到我可以使用。$ destroy()来清除引用并且它可以工作,但它会将我的代码包含在内。$ destroy()s遍布。
我是否有任何可能缺少的模式来处理这种情况?为了提供更好的概念,我的firebase数据的结构如下:
<account id>
permissions
<house id>
owner: {r: 1, w: 1},
admin: {r: 1, w: 0}
<house id 2>
...
houses
<house id>
title: "some title",
rooms: ["roomId1", "roomId2", ...]
<house id 2>
...
rooms
<house id>
roomId1
type: "living",
objects: ["objId1", "objId2", ...]
roomId2
type: "empty"
<house id 2>
...
objects
<house id>
objId1: {type: "chair", color: "red"},
objId2: {type: "table", color: "white"}
<house id 2>
...
所以当我想要删除一个房子时,我需要级联删除所有房间和对象,然后是房子,然后是权限。正如我之前所说,删除很顺利,但是如何确保我的其余代码中没有引用以避免获得权限错误?
FIREBASE WARNING: on() or once() for /4437/houses/-JepfRtexB0YI1oBBZzg failed: Error: permission_denied: Client doesn't have permission to access the desired data.
Error: permission_denied: Client doesn't have permission to access the desired data.
谢谢