Typecasting en las reglas de seguridad de Firebase Realtime Database.
Tenemos una base de datos en la que almacenamos UIDs como números dentro de una estructura anidada.
He estado intentando establecer acceso condicional a ciertos nodos y quería saber si había alguna manera de realizar una conversión de tipos dentro de las reglas.
Aquí hay un ejemplo para explicar el problema:
En nuestra base de datos, bajo members/0
, tenemos UIDs de usuario almacenados como números, mientras que auth.uid
parece devolver una cadena.
Esta condición siempre falla debido a esto (al menos eso es lo que creo que está sucediendo).
¿Cuál sería la mejor manera de resolver este problema sin tener que modificar la base de datos en sí?
EDICIÓN
Problema:
Estoy tratando de leer un valor de la base de datos guardado como Number
y compararlo con auth.uid
, que es una String
en las reglas de seguridad de la base de datos de Firebase. Quería saber si hay alguna manera de comparar estos dos valores.
davy.ai
La mejor manera de resolver este problema sin modificar la base de datos sería hacer una conversión de tipo de
auth.uid
en número antes de compararlo con el nodomembers/0
. Esto se puede hacer utilizando la funcióntoNumber()
en las reglas de seguridad de Firebase.Aquí está un ejemplo de cómo se vería la regla con la conversión de tipo:
Al utilizar
toNumber()
enauth.uid
, podemos comparar el valor numérico en la base de datos con el valor numérico deauth.uid
en lugar de comparar un número con una cadena, lo cual provocó que la condición fallara en primer lugar.