Por: Juan Andrés Núñez
Juan Andrés Núñez - juanwmedia

Especialista en tecnologías Web. Me dedico a enseñar desarrollo Web moderno a cualquier persona (físicamente en clase y a través de Internet) desde una perspectiva holística: teniendo en cuenta las competencias técnicas necesarias, junto a las habilidades personales o soft skills. Tienes más información en mi Web.

  • 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.
Descarga la chuleta de Vue 3 gratis

Descarga la chuleta de Vue 3

Para tener todas las novedades de Vue 3 al alcance de la mano 🔥️

DESCARGA GRATIS LA CHULETA AHORA 💾

Presentación


Firebase Auth


Cloud Firestore 🔥


Cloud Storage 🗄


Cloud Functions ☁


No te pierdas ninguna novedad

Escuela Vue en Twitter

Participa en la Comunidad Escuela Vue

Comunidad Escuela Vue