Estoy usando la versión V9 (modular) de la base de datos en tiempo real de Firebase. Tengo una lista de URL con claves generadas automáticamente usando push() . Esta es la estructura de datos.
Lo que quiero es verificar la existencia de una de estas URL en la lista. Esto es lo que he intentado.
const testURL = "https://i.redd.it/bm6psl9sgsj81.png"; //First one in the list const db = getDatabase(); const dbRef = ref(db, "burnedURLs/"); const q = query(dbRef, equalTo(testURL)); const snapshot = await get(q); const results = snapshot.toJSON(); console.log(results); //Returns NULL¿Cómo se verifica la existencia de un valor o simplemente se recupera un valor cuando no se conoce la clave? La documentación para V9 no es muy buena y la mayoría de los ejemplos que he encontrado son para V8. Gracias por cualquier ayuda.
Editar: el uso de exist exists() devuelve falso cuando existe (es el primer hijo en el árbol). Creo que el problema es que no estoy formando la consulta correctamente y eso es con lo que necesito ayuda.
get(<query>) devuelve un DataSnapshot que aún exists() que devuelve true si este DataSnapshot contiene algún dato:
const q = query(dbRef, orderByValue(), equalTo(testURL)); const snapshot = await get(q); if (snapshot.exists()) { const results = snapshot.val(); console.log('Results', results) } else { console.log('Data does not exist') }De la documentación,
Para filtrar datos, puede combinar cualquiera de los métodos de límite o rango con un método de ordenación al construir una consulta.
Entonces, agregar orderByValue() en la consulta debería resolver el problema.