Gardezi
Gardezi

Reputation: 2842

child_changed event firebase

I'm kind of new to firebase. I was just trying out some example when I came across some of its event which by the way are pretty cool.

I have saved some data in firebase database which is :

 driver
      -KV_Cj7sL6sg6K9E5ifh
         status: "Incomplete"

The thing that troubling me is that when a child is updated child_changed event is triggered. When I access it's data I'm not seeing the key with it.

I have made a node(I think a row is called a node in firebase not sure) in the driver table. When I changed the status of it to complete the child_changed event it triggered. And I receive the packet which has been updated. The thing is I want to get the Id(KV_Cj7sL6sg6K9E5ifh) too. But the problem is it's only sending me status: complete.

This is the code that I have written for child_changed:

usersRef.on("child_changed", function(data) {
   var player = data.val();
   console.log(player);
   console.log("The new status is:  "+ player.status);
});

Please help me that how will I receive the Id too. Thanks

Upvotes: 3

Views: 8913

Answers (2)

Zaid Mirza
Zaid Mirza

Reputation: 3699

you can get Id child,try below

console.log("The new status is:  "+ player.$id);

every Object returned by Firebase contains $id attribute

UPDATED:

you can get id/key even Firebase does not return id among child, try below

console.log("The new status is:  "+ data.ref.key); //it will returns -KV_Cj7sL6sg6K9E5ifh


console.log("The new status is:  "+ data.ref.parent.key); //it will returns driver

Upvotes: 2

Frank van Puffelen
Frank van Puffelen

Reputation: 598708

What you call the id, is called the key in Firebase terms. To get the key of a snapshot, you can access the key property of that snapshot:

usersRef.on("child_changed", function(snapshot) {
   var player = snapshot.val();
   console.log(player);
   console.log("The new status is:  "+ player.status);
   console.log("The key of the player is "+snapshot.key);
})

Upvotes: 4

Related Questions