No entiendo por qué el tipo data es un objeto dentro de mi función pero afuera es una función... ¿Alguna idea de por qué? Gracias.
const fetchAllUsersData = async () => { setLoading(true); const userFromFirebase = await firebase.database().ref("users").orderByChild("nickname").equalTo(nickname).on("child_added", ((snapshot) => { const data = snapshot.val(); console.log("data", typeof data); // show object return data; })); console.log("userFromFirebase",typeof userFromFirebase); // show function } fetchAllUsersData();Lea la documentación: https://firebase.google.com/docs/reference/node/firebase.database.Reference#on
El método .on devolverá cualquier cosa, no su DataSnapshot. Un mejor enfoque para esto sería usar devoluciones de llamada en su lugar. Aquí hay un ejemplo:
const fetchAllUsersData = async (callback) => { setLoading(true); const userFromFirebase = await firebase.database().ref("users").orderByChild("nickname").equalTo(nickname).on("child_added", ((snapshot) => { const data = snapshot.val(); console.log("data", typeof data); // show object callback(data); })); } fetchAllUsersData((data) => { console.log("data", typeof data); // still shows object });