user8749566
user8749566

Reputation:

Trying to get a snapshot of a variable from firebase gives me an error

Problem

In a social media app I am making with react native and firebase, I am trying to grab the number of comments a post has using the snapshot function of a variable I have saved on my servers, then I am going to add one to this variable when a user adds a new comment. My code to do so is right here:

firebase.database().ref('posts').child(this.state.passKey).update({
   comments: firebase.database().ref('posts/'+this.state.passKey).child('comments').snapshot.val() + 1 
})

When I actually run this code, I get an error saying:

Reference.child failed: First argument was an invalid path = "undefined".
Paths must be non-empty strings and can't contain ".","#","$","[", or "["

At first I thought this might be that the "this.state.passKey" wasn't actually passing the key, but putting in a key I copied from the server didn't fix the problem.

My Server -A picture of my server

Upvotes: 0

Views: 1645

Answers (2)

Basavannevva
Basavannevva

Reputation: 294

To get the comments of particular post you should do like this

let postId='someId'

postRef=`/posts/${postId}`
firebase.database().ref(postRef).once("value", dataSnapshot => {
comment=dataSnapshot.val().comments
  });

Upvotes: 0

Doug Stevenson
Doug Stevenson

Reputation: 317372

It looks like you're expecting this bit of code to query the database:

firebase.database().ref('posts/'+this.state.passKey).child('comments').snapshot.val() + 1 

Unfortunately, it doesn't work that way. There's no snapshot property on a database Reference object returned by child() or ref().

Instead, you'll need to query the database at that reference, then when you're called back with its value, you can apply it elsewhere.

var ref = firebase.database().ref('posts/'+this.state.passKey+'/comments')
ref.once('value', function(snapshot) {
    // use the snapshot here
})

Upvotes: 1

Related Questions