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.

No te pierdas ninguna novedad

Escuela Vue en Twitter

Participa en la Comunidad Escuela Vue

Comunidad Escuela Vue