Firebase 实时数据库安全规则中的类型转换

Typecasting in Firebase Realtime database security rules

我们有一个数据库,我们将 UID 存储为嵌套结构中的数字。

我一直在尝试设置对某些节点的条件访问,想知道是否有任何方法可以在规则内进行类型转换。

举个例子来说明问题:

".read": "data.child('members/0').val() == auth.uid && auth.uid!=null",

在我们的数据库中,在 members/0 下我们将用户 UID 存储为数字,而 auth.uid 似乎 return 一个字符串。

这种情况总是因此而失败(至少我认为正在发生的事情)。

无需修改数据库本身即可解决此问题的最佳方法是什么?

编辑

问题: 我正在尝试读取存储为 Number 的数据库值并将其与 auth.uid 进行比较,后者是 Firebase 数据库安全规则中的 String。想知道是否有任何方法可以比较这两个值

根据定义,Firebase 中的 UID 是字符串,因此即使您的底层身份验证系统使用数字 ID,它们也会在 Firebase 中存储为字符串。出于这个原因,我强烈建议将 UID 也作为字符串存储在 Firebase 中。

也就是说,您可以将数字强制转换为当前规则中的字符串,然后将其与 UID 字符串进行比较:

".read": " ''+data.child('members/0').val() == auth.uid && auth.uid!=null "
//