es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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 nodo members/0. Esto se puede hacer utilizando la función toNumber() 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:

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

    Al utilizar toNumber() en auth.uid, podemos comparar el valor numérico en la base de datos con el valor numérico de auth.uid en lugar de comparar un número con una cadena, lo cual provocó que la condición fallara en primer lugar.

Comments are closed.