Tengo una colección anidada en firestore como se muestra a continuación:
db-dev user user-id-1 events-collection ... user-id-2 events-collection ... user-id-3 events-collection ...Quiero consultar todos los eventos de la colección de eventos. Sin embargo, también quiero mantener el esquema anterior ya que el administrador necesita ver toda la colección de eventos y los usuarios específicos necesitan ver su colección específica.
La consulta que escribo ahora se parece a esto:
const uids = await getAllUserIds(); //Returns all user ID const promises = uids.map(element => db.collection(`db-dev/user/${element}/events-collection/`).get()) const documents = await Promise.all(promises);No estoy muy seguro de si esta es la forma más optimizada de consultar los datos o debería usar otra cosa. ¿Puede alguien por favor ayudarme aquí?
Para leer todas events-collection una sola vez, puede usar una consulta de grupo de colección .
Por ejemplo, sin ninguna condición, esto lee todos los documentos de todas las colecciones denominadas events-collection :
db.collectionGroup('events-collection').get() Si desea leer solo las events-collection en /user , puede usar el truco que Sam mostró aquí: CollectionGroupQuery pero limite la búsqueda a subcolecciones en un documento en particular