Search code examples
javascriptfirebasefirebase-realtime-databaseread-write

Reading a value from Realtime Firebase


I have the following json structure:

enter image description here

Within "all" node I have an attribute "drinkId" and I'm trying to move it outside that child node bringing it one level up.

I'm trying to read the value without any luck

const cocktailRef= firebase
      .database()
      .ref("Ratings");  
    cocktailRef.once("value", (snapshot) => {      
      snapshot.forEach((child) => {           
        const drinkIdPass = child.ref.child("all").child("drinkId").value(); 

        child.ref.update({ drinkId: drinkIdPass }); 
     })
  }) 

I've tried different variants of ".value()", same problem


Solution

  • There isn't any value() method on a DataSnapshot. It's val() Try refactoring your code like this:

    const cocktailRef= firebase.database().ref("Ratings");  
    
    cocktailRef.once("value").then(async (snapshot) => {  
      const updates = { }    
      snapshot.forEach((child) => {           
        const drinkIdPass = child.val().all.drinkId
        updates[`${child.key}/drinkId`] = drinkIdPass 
      })
    
      await cocktailRef.update(updates)
      console.log("Data updated")
    })