¿Hay alguna manera de consultar una colección que es un nieto en firebase?
Estructura actual de base de fuego:
{ products: { "dfwojozijowjfoije": { "barcodes": ["12345", "5678"], "productName": "someProduct" }, "sdafsdasdfasdfadsf": { "barcodes": ["99999", "88888"], "productName": "someProduct2" } } }Consulta actual que uso:
await firebase .database() .ref('products') .orderByChild('barcodes') .equalTo('88888') .on('value', snapshot => { setProductName(snapshot.val()) } )No hay forma en una consulta de base de datos en tiempo real de Firebase para verificar la existencia de un valor en una matriz. Si está tratando de hacer esto, generalmente significa que su estructura de datos en realidad no es una matriz, sino un conjunto .
Sin embargo, dado que no existe un tipo de datos establecido, no puede almacenarlo en Firebase de forma nativa. Sin embargo, el equivalente más cercano no es una matriz, sino un mapa como este:
"barcodes": { "12345": true, "5678": true }Esto puede parecer un poco extraño al principio, pero tiene las propiedades exactas que normalmente busca en un conjunto: los valores (que ahora son claves) son, por definición, únicos en el nodo principal, y puede probar la presencia de un valor/clave específico.
Desafortunadamente, aún no podrá consultar esta estructura, ya que solo puede definir índices en las claves que conoce, y asumo que los códigos de barras son un conjunto de valores bastante infinito.
Entonces, en su lugar, tendrá que definir una estructura de datos invertida, como lo expliqué aquí: consulta de Firebase si el niño del niño contiene un valor