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 "
//
我们有一个数据库,我们将 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 "
//