Angular: Cómo hacer consultas a Firebase con condiciones

La mayoría de los desarrolladores se sienten muy cómodos con la sintaxis de sql, de una manera muy sencilla -casi traduciendo al inglés- puedes montar una consulta con varias condiciones sin problemas, otra cosa es el tiempo de respuesta de la base de datos, pero hoy no hablamos de eso.

Sin embargo cuando nos adentramos en bases de datos no relacionales (nosql) esa comodidad muchas veces desaparece.

En mi caso he usado bastantes veces Firebase como base de datos en proyectos de Angular, Firebase es un sistema de base de datos no relacional de Google muy sencillo de implementar y más rápido que el correcaminos, es un complemento ideal para proyectos con Angular para tener una base de datos rápida y potente sin complicaciones.

En Angular utilizo la librería Firestore:
import { AngularFirestore } from 'angularfire2/firestore';

Con esta librería hacer consultas es muy sencillo. Vamos primero con una consulta simple (afs es la referencia a la instanciación de AngularFirestore):
this.afs.collection('users').snapshotChanges();

Si queremos hacer una consulta con ordenación y límite de resultados:
this.afs.collection('users'), ref => ref.limit(1).orderBy('date','desc')).valueChanges();

Si queremos hacer una consulta con una condición:
this.afs.collection('users'), ref => ref.where('date','<','2019/10/21).limit(1).orderBy('date','desc')).valueChanges();

Si queremos hacer una consulta con varias condiciones:
return this.afs.collection('users'),
ref =>
ref.where('date', '>=', stringNewDate ).where('date', '<=', stringDate ).limit(7).orderBy('date','asc')
).valueChanges();

Cómo veis es bastante sencillo e intuitivo.

Espero que os sirva de utilidad ^_^.

Comentarios

Anónimo ha dicho que…
Si la colección tiene un arreglo, dentro de ese arreglo un mapa, dentro del mapa otro mapa y en ese mapa una propiedad como podría hacer la consulta.

Por favor ayuda.
Anónimo ha dicho que…
Excelente, bien explicado colega