Soy un novato de Firestore y necesito hacer una consulta. Tengo esta estructura de base de datos:
{ "businesses": { "1" : { "name": "bla", "employees": { "1" : { "name": "Juan", "schedules": { "1": { "scheduleId" : "72", "from": "21/08/2020" } } }, "schedules": { "72": { //some properties } } } } } } Dado un businessId y un scheduleId , necesito buscar a todos los empleados de la empresa que tengan asignado ese scheduleId .
He intentado esto:
export async function getEmployeesWithSchedule(businessId: string, scheduleId: string): Promise<Employee[]> { const docs = (await admin.firestore().collection(`businesses/${businessId}/employees`) .where("schedules.scheduleId", "==", scheduleId) .get()).docs; //extract results }Pero no obtengo resultados. ¿Cómo debo hacer esta consulta?
Pruebe la siguiente cláusula where . Solo debe recuperar documentos en los que el mapa de schedules contenga un par clave-valor con clave scheduleId y un valor non-null :
const docs = (await admin.firestore().collection(`businesses/${businessId}/employees`) .where(`schedules.${scheduleId}`, "!=", null) .get()).docs;