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.

  • En esta lección hablaremos de un tema importante: los índices de Cloud Firestore. Es un tema complejo pero nosotros vamos a ser fieles a la filosofía del curso tratando de aprender lo esencial para poder entender y utilizar esta característica a nuestro favor.
  • Para entender lo que es el índice de una base de datos podemos usar el ejemplo del índice de un libro. Este último asocia temas o capítulos a un número de página. En nuestro caso, los índices de Cloud FIrestore asocia un elemento de la base de datos a su localización en la misma.
  • Tradicionalmente si no se dispone de un índice, se buscan los resultados examinando elemento por elemento, lo que hace que poco a poco y al final la operación se va volviendo más lenta conforme la cantidad de elementos aumenta.
  • En Firestore sin embargo, se crea automáticamente un índice con cada campo de un documento. Estos contienen una asociación de todos los documentos de la colección que contienen ese campo, y su valor. Estos índices automáticos hacen que las consultas en Firebase se resuelvan casi instantáneamente.
  • Puedes ver los índices de tu base de datos en la consola de Cloud Firestore, apartado índices. Antes de continuar puedes ver que se pueden crear exenciones a los índices. Esto es útil cuando por ejemplo tenemos un campo en los documentos de una colección que contiene una gran cantidad de texto y no vamos a usarlo en ninguna consulta. Puedes ver otras buenas prácticas en la documentación.
  • Como ves los llamados de campo único son los creados automáticamente para consultas de comparación con los operadores == e in y ordenados de forma descendente y descendente. También otro para poder consultar valores de matrices con el operador array-contains-any, tal y como hemos hecho en otra lección.
  • Por otro lado tenemos los índices compuestos, que permiten asociar los valores de dos o más campos. Cloud Firestore no puede crear índices compuestos por la sencilla razón de que son demasiadas combinaciones. Por ello se crean bajo demanda.
  • Puedes gestionar los índices compuestos desde la consola de Cloud Firestore o al realizar una consulta que lo requiera (generalmente al usar el método where() dos o más veces). En este último caso se te advertirá a través de un mensaje en la consola de la necesidad de crear un nuevo índice además de una URL que te llevará directamente a la pantalla de creación.
const query = await collectionRef
      .where("name", "==", "Guizmo")
      .orderBy("created", "asc")
      .get();

query.forEach(querySnapshot => console.log(querySnapshot.data()));

No te pierdas ninguna novedad

Escuela Vue en Twitter

Participa en la Comunidad Escuela Vue

Comunidad Escuela Vue