¿Cómo elimino este nodo específico en mi base de datos como se muestra en esta imagen a continuación? (el nick sera diferente ya que solo lo estoy probando, si alguien se confunde) 
He intentado
const roomRef = firebase.database().ref(`allRooms/${rooms}`); roomRef.orderByChild('nickname').equalTo(`${username}`).once('value',(snapshot)=> { snapshot.ref.remove(); })Pero simplemente eliminó todos mis nodos en esa sala, gracias
Ya casi estás ahí.
Cuando ejecuta una consulta en la base de datos de Firebase, potencialmente habrá múltiples resultados. Entonces, la instantánea contiene una lista de esos resultados. Incluso si solo hay un único resultado, la instantánea contendrá una lista de un resultado. Y su código necesita manejar el hecho de que `` es una lista con algo como:
roomRef.orderByChild('nickname').equalTo(username).once('value',(snapshot)=> { snapshot.forEach((userSnapshot) => { userSnapshot.ref.remove(); }) }) Lo anterior ejecuta una llamada remove() separada para cada nodo coincidente. Si solo tiene uno (o unos pocos) nodos con el mismo nombre, probablemente esté bien. Pero si tiene más de ellos, considere usar una sola actualización de múltiples rutas para eliminar todos los nodos como este:
roomRef.orderByChild('nickname').equalTo(username).once('value',(snapshot)=> { let updates = {}; snapshot.forEach((userSnapshot) => { updates[userSnapshot.key] = null; // 👈 setting to null will remove the node }) roomRef.update(updates); // 👈 send all updates in one call })Aquí snapshot.ref será roomRef en sí mismo, por lo tanto, usar el método remove() en eso eliminará todo el nodo allRooms/roomId . Para eliminar ese nodo secundario específico, necesita una referencia a eso. Prueba esto:
const roomRef = firebase.database().ref(`allRooms/${rooms}`); roomRef.orderByChild('nickname').equalTo(`${username}`).once('value').then((snapshot) => { if (snapshot.val()) { const keys = Object.keys(snapshot.val()) snapshot.ref.child(keys[0]).remove().then(() => { // ^^^^^ deleting that child instead of roomRef console.log("Data Deleted") }).catch(e => console.log(e)); } })