在我使用本机和firebase做的社交媒体应用程序中,我试图使用我保存在服务器上的变量的快照功能获取帖子的评论数量,然后我要添加一个当用户添加新评论时,使用此变量。我这样做的代码就在这里:
firebase.database().ref('posts').child(this.state.passKey).update({
comments: firebase.database().ref('posts/'+this.state.passKey).child('comments').snapshot.val() + 1
})
当我实际运行此代码时,我收到一条错误消息:
Reference.child failed: First argument was an invalid path = "undefined".
Paths must be non-empty strings and can't contain ".","#","$","[", or "["
起初我认为这可能是“this.state.passKey”实际上没有传递密钥,但是放入我从服务器复制的密钥并没有解决问题。
答案 0 :(得分:1)
您似乎期望这段代码可以查询数据库:
firebase.database().ref('posts/'+this.state.passKey).child('comments').snapshot.val() + 1
不幸的是,它并没有这样做。 snapshot
或child()
返回的数据库Reference对象上没有ref()
属性。
相反,您需要在该引用处查询数据库,然后当您使用其值回调时,可以将其应用于其他位置。
var ref = firebase.database().ref('posts/'+this.state.passKey+'/comments')
ref.once('value', function(snapshot) {
// use the snapshot here
})
答案 1 :(得分:1)
要获得特定帖子的评论,您应该这样做
let postId='someId'
postRef=`/posts/${postId}`
firebase.database().ref(postRef).once("value", dataSnapshot => {
comment=dataSnapshot.val().comments
});