Digamos que necesito enviar un correo electrónico a todos los miembros del grupo cuando el grupo esté completo:
export const sendEmailToNewMember = functions.firestore.document('group/{groupId}').onCreate(async (snapshot,context) => { } El group de colección tiene members de subcolección. Compruebo si el recuento de miembros ha aumentado y coincide con el número total de miembros que pueden unirse a un grupo. Si el miembro final se unió, debo enviar a todos los miembros un correo electrónico diciendo que el grupo está completo.
La estructura de datos se parece a la que se muestra a continuación:
collection group { membersCount: 9999, totalMembers: 100000, .... users subcollection }Intenté acceder a la colección a través de ref así:
const usersRef = snap.ref.collection('users) Pero, el resultado fue undefined . Por ahora, accedo usando
await firestore().collection('group').doc(groupId).collection('users') ¿Es posible acceder a la subcolección sin esperarla y desde la propia snapshot ?
El document() toma la ruta a un documento y no a un campo. Entonces, si desea activar esta función cuando se actualice cualquiera de los campos en el documento de grupo, establezca la ruta en .document('group/{groupId}') .
Además, la snapshot en onCreate() contendrá datos del documento de ese grupo únicamente (el documento que activó la función). Tendrás que leer explícitamente la subcolección.
Parece que desea enviar un correo electrónico a un nuevo miembro que se une a un grupo. En su lugar, puede activar la función cuando se agrega un nuevo usuario en la subcolección del usuario como se muestra a continuación:
// Here user's UID would be ID of sub-document export const sendEmailToNewMember = functions.firestore.document('group/{groupId}/users/{userId}').onCreate(async (snapshot,context) => { const { groupId, userId } = context.params; }