Firestore安全规则奇怪的行为

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firestore安全规则奇怪的行为相关的知识,希望对你有一定的参考价值。

在Firestore安全规则中,以下行适用于读取操作,以在整数resource.data.uids数组中查找request.auth.uid:

allow read: if request.auth.uid in resource.data.uids;

但上述行不适用于更新操作。我不得不将request.auth.uid强制转换为整数,以使其适用于更新操作,如下所示:

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

我想知道这种奇怪行为背后的原因。

答案

uid中使用的.where("uids", "array-contains", uid)的数据类型更改为整数后,读取和更新操作现在都可以使用以下行:

allow read, update: if int(request.auth.uid) in resource.data.uids;

事情看起来很正常,因为resource.data.uids包含一个整数数组,而request.auth.uid包含一个数字字符串值,必须将其转换为整数才能进行比较。

以上是关于Firestore安全规则奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用Firestore安全规则使用FieldValue.increment()更新文档字段?

以下场景的正确 Firestore 安全规则是啥?

Firestore:删除文档和安全规则

Ionic Firestore 安全问题和 Firestore 规则

使用制服时 Xamarin OpenGL 片段着色器的奇怪行为

匿名身份验证用户的这个 Firebase/Firestore 安全规则是不是安全?