Estoy tratando de usar el método Firebase .on() para verificar cada vez que se crea una nueva cuenta en mi base de datos Firebase en tiempo real. Ahora que estoy cifrando estos datos en la base de datos de Firebase, me gustaría que la primera vez que se carguen los datos de Firebase se descifren usando una función que hice. ¿Es posible que pueda hacer algo como una promesa que me permita hacer esto una vez que Firebase haya cargado todos los datos en mi variable?
var users2 = database.ref("users/").on("value", (snapshot) => { const usersLst = snapshot.val(); users = usersLst });Me gustaría agregar algo como esto:
var users2 = database.ref("users/").on("value", (snapshot) => { const usersLst = snapshot.val(); users = usersLst }).then(() => { console.log(decryptAccounts(users)) });Una cosa importante que quiero mantener es la función .on() ya que me permitirá verificar constantemente si alguien ha creado una nueva cuenta en la base de datos. ¿Alguien tiene alguna idea de qué otro enfoque podría usar para lograr lo mismo?
Puede almacenar la referencia en una variable para reutilizarla como sugieren los documentos.
const databaseRef = database.ref("users/"); // use databaseRef.get() with the correct path to your attribute you want to get // Runs only once databaseRef.get().then((snapshot) => { // Decrypt function }); // Listens to changes var users2 = databaseRef .on("value", (snapshot) => { const usersLst = snapshot.val(); users = usersLst });Primero obtiene los valores una vez y luego puede descifrarlos, cuando los valores cambian, la función .on se activará nuevamente.
La respuesta que encontré con la ayuda de Dharmaraj fue que puedes hacer esto:
database.ref("users/").on("value", (snapshot) => { decryptAccounts(snapshot.val()); });Esto obtendría los valores de la base de datos cada vez y los descifraría.
Simplemente puede agregar las funciones decryptAccounts() dentro on() para que cada vez que se reciba una actualización, pueda ejecutar esa función en esos datos.
var users2 = database.ref("users/").on("value", (snapshot) => { const usersLst = snapshot.val(); // runs on new value fetched after every update decryptAccounts(usersLst) })