Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

293
Views
Eliminar nodo específico de Firebase en JavaScript

¿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) ingrese la descripción de la imagen aquí

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

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

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 })
over 4 years ago · Santiago Trujillo Report

0

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)); } })
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!