Estoy usando la base de datos en tiempo real de Firebase con el nodo y encuentro que la única forma de verificar que existe una clave es devolver todos los datos
{ "salas" : { "sala01" : { "activa" : true, "fechaComienzo" : "2021-10-16 07:09:00Z", "fechaCreacion" : "2021-10-16 07:09:24Z", "nombre" : "test", "masInfo": { ... } }, "sala02" : { "activa" : true, "fechaComienzo" : "2021-10-16 07:09:00Z", "fechaCreacion" : "2021-10-16 07:09:24Z", "nombre" : "test", "masInfo": { ... } } } } async function checkExists(_ref, key) { const q = query(_ref, ...[orderByKey(), equalTo(key)]) const datos = await get(q); console.log('@info', q, datos); return datos.exists(); } const _ref = ref(getDatabase()) checkExists(_ref, 'sala01') Con el ejemplo anterior, si quiero saber si existe sala01 , me trae cada nodo con sus descendientes.
Me pregunto si hay alguna otra forma de simplemente verificar si sala01 existe sin traerme el nodo completo o si hay algún truco para traer un nodo con una profundidad como si he visto en la documentación de la API REST, superficial .
Este tipo de consulta es más compleja de lo necesario:
const q = query(_ref, ...[orderByKey(), equalTo(key)])Si ya conoce la clave de un nodo, no necesita usar una consulta, pero puede acceder a esa clave directamente.
async function checkExists(_ref, key) { const ref = child(_ref, key) const datos = await get(ref); return datos.exists(); } Esto no leerá todo el nodo /_ref , pero leerá todo el /_ref/$key . No hay forma de probar la existencia de una ruta sin leer esa ruta.