- Firebase Cloud Firestore permite realizar consultas para encontrar los documentos y las colecciones que necesitas en tu proyecto a través del método
where()
.
- Por ejemplo, vamos a pedir todos los documentos que tengan una propiedad
name
igual a "Guizmo".
const query = await db
.collection("users")
.where("name", "==", "Guizmo")
.get();
query.forEach(querySnapshot => console.log(querySnapshot.data().name));
- Como ves basta finalizar la consulta con el método
get()
para obtener los resultados iterando sobre sus snapshots y desenvolverlos a su vez con el método data()
. Todo esto ya lo hemos utilizado en anteriores lecciones.
- El operador que hemos usado
==
es el de comparación igual a, pero obviamente hay muchos más como puedes ver en la documentación. Vamos a jugar con algunos.
- Con el operador no igual a
!=
busca documentos con propiedades que no sean igual al valor suministrador. En este ejemplo cualquier documento que contenga la propiedad created
.
const query = await db
.collection("users")
.where("created", "!=", false)
.get();
query.forEach(querySnapshot => console.log(querySnapshot.data().id));
- También dispones de los operadores
in
, not-it
y array-contains
que sirven para comprobar si el valor de una propiedad de un documento se encuentra entre diferentes opciones.
- Con
in
buscamos que el valor se encuentre entre las opciones especificadas en la matriz.
const query = await db
.collection("users")
.where("name", "in", ["Guizmo", "Juan Andrés"])
.get();
query.forEach(querySnapshot => console.log(querySnapshot.data().name));
- Por otro lado, con
array-contains-any
, buscamos valores en propiedades matriz de documentos que coincidan con alguno de los especificados.
const query = await db
.collection("users")
.where("favs", "array-contains-any", ["dusk", "rain"])
.get();
query.forEach(querySnapshot => console.log(querySnapshot.data().name));
- Quizás te estés preguntado si no se pueden hacer consultas tipo
like
con Cloud Firestore, y la respuesta es no (de forma nativa) ya que se crean índices de todos los campos de tus documentos y no existe ningún método para usar expresiones regulares, por ejemplo.
- Algo reciente es la posibilidad de hacer consultas de grupo a colecciones con el mismo identificador, ya que de forma estándar los resultados pertenecen a una única colección. Exploraremos esta función más adelante en el propio proyecto del curso.