Estoy tratando de obtener datos filtrados de mi base de datos en tiempo real. En este ejemplo, quiero obtener solo estos una vez con un uid específico:
Traté de obtener los datos con el fragmento de los documentos de Firebase:
const db = getDatabase(); const auth = getAuth(); const myUserId = auth.currentUser.uid; const myOffersRef = query(ref(db, 'allOffers/'), orderByChild('uid'), startAt(user.uid)); Pero, ¿cómo obtengo los datos de const myOffersRef ?
¡Gracias!
Como se muestra en la documentación sobre la lectura de datos , puede usar get para obtener los datos en una ruta o para una consulta.
const myOffersRef = query(ref(db, 'allOffers/'), orderByChild('uid'), equalTo(user.uid)); get(myOffersRef).then((snapshot) => { snapshot.forEach((child) => { console.log(child.key, child.val().uid); }); }).catch((error) => { console.error(error); }); Tenga en cuenta que también cambié startAt a equalTo , ya que probablemente solo desee los nodos que coincidan con el UID, no la diapositiva de los nodos que comienzan desde la primera coincidencia (que es lo que hace startAt ).
Se necesita forEach ya que una consulta puede tener múltiples resultados, por lo que la instantánea contiene una lista de esos resultados. Incluso si solo hay un único resultado, la instantánea contendrá una lista de un resultado.