Sé que esto tiene que ver con async pero no puedo resolverlo.
Esto devuelve un objeto vacío. El functions.logger.log(groupName) está registrando un valor, así que sé que hay datos allí.
exports.getMinistryMembers = functions.https.onCall((req) => { // calls const getMinistry = admin.database().ref(`organization/${req.orgId}`); const getMinistryForUser = admin.database().ref(`organization/${req.orgId}/attendanceOptionsMinistries`) const ministryMembers = admin.database().ref(`organization/${req.orgId}/inMinistries`); const ministryGroup = admin.database().ref(`organization/${req.orgId}/ministryGroups`); return getMinistryForUser .child(req.uid) .once('value') .then(snapshot => { if (snapshot.val()) { const ministryUids = snapshot.val(); return Object.keys(ministryUids).map((ministryItem, i) => { // get name of group return ministryGroup .child(ministryItem) .once('value') .then(groupSnap => { const groupName = groupSnap.val(); functions.logger.log(groupName); return groupName; }) }); } }) });Esperaría que el valor regrese ya que está en una llamada, pero no estoy seguro de lo que me estoy perdiendo. Como nota al margen, esto funciona, pero no el segundo entonces.
exportaciones.getMinistryMembers = functions.https.onCall((req) => { // llamadas const getMinistry = admin.database().ref( organization/${req.orgId} ); const getMinistryForUser = admin.database().ref ( organization/${req.orgId}/attendanceOptionsMinistries ) const ministerioMembers = admin.database().ref( organization/${req.orgId}/inMinistries ); const ministerioGroup = admin.database().ref( organization/${req.orgId}/ministryGroups );
return getMinistryForUser .child(req.uid) .once('value') .then(snapshot => { if (snapshot.val()) { const ministryUids = snapshot.val(); return Object.keys(ministryUids).map((ministryItem, i) => { return ministryItem; }); } }) });