Actualmente tengo mi estructura DB como esta 
Lo que quiero hacer es poder recorrer cada uno que tenga un cierto feedId, lo he estado intentando de esta manera pero actualmente no tengo suerte. ¿Alguien podría ayudar?
function clearAllPostsInOwnFeed(userId) { return admin .database() .ref(constants.FBC_USERS_FEEDS + '/' + userId) .once('value') .then((snapshot) => { snapshot.forEach((snap) => { if (snap.child('fromId').val() === userId) return snap.remove() return snap }) console.log(snapshot) return snapshot }) }Actualmente está devolviendo una instantánea de la devolución de llamada interna. Como eso no es una promesa, se resuelve de inmediato, y su función finaliza. antes de que haya eliminado los nodos.
La solución más simple es usar Promise.all() para esperar a que terminen todas las eliminaciones:
function clearAllPostsInOwnFeed(userId) { return admin .database() .ref(constants.FBC_USERS_FEEDS + '/' + userId) .once('value') .then((snapshot) => { let promises = [] snapshot.forEach((snap) => { if (snap.child('fromId').val() === userId) { promises.push(snap.ref.remove()) } }) return Promise.all(promises); }) }Alternativamente, puede usar una actualización de múltiples rutas para borrar todos los nodos coincidentes con una sola escritura:
function clearAllPostsInOwnFeed(userId) { const ref = admin .database() .ref(constants.FBC_USERS_FEEDS + '/' + userId); return ref .once('value') .then((snapshot) => { let updates = {}; snapshot.forEach((snap) => { if (snap.child('fromId').val() === userId) { updates[snap.key] = null; } }) return ref.update(updates); }) }