Firestore安全规则中的阵列比较

时间:2019-08-06 14:25:07

标签: javascript firebase firebase-security

用户需要能够将其uid添加到文档中名为“用户”的数组中。他们应该只能添加/删除自己的uid,而不能进行其他操作。

为此,我需要编写一个安全规则,但无法弄清楚如何在安全规则中进行数组比较。

它必须是这样的:

allow update: if request.resource.data.users == [...resource.data.users, request.auth.uid]

这是查询:

.update({
      users: firebase.firestore.FieldValue.arrayUnion(params.uid),
    })

这可能吗?

2 个答案:

答案 0 :(得分:0)

是的。可以检查安全规则中文档的数组字段中是否存在特定的uid。您可以使用in条件进行检查。

所以看起来很像这样。

allow update: if (request.auth.uid in request.resource.data.users);

希望这会有所帮助。

答案 1 :(得分:0)

是的,有可能,

print(df1)

   id values
0   1      l
1   1      m
2   1      c
3   2      l
4   2      l
5   3      l
6   3      l
7   3      c

request.resource.data.users是建议的更改之后用户文档的状态,而resource.data.users是建议的更改之前用户文档的状态。通过检查差异是否为1,可以确保仅将一项添加到数组中。