从firebase获取值会返回错误

时间:2017-12-09 06:45:45

标签: javascript firebase react-native firebase-realtime-database

问题

使用React Native创建的社交媒体应用程序我尝试使用快照功能从我的firebase服务器获取数据,然后将1添加到该值,然后在服务器上更新该值。我正在做的代码是:

    this.setState({
      comments: firebase.database().ref('posts/'+this.state.passKey).once('value', function(snapshot) {snapshot.val().comments}) 
        })

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

当我运行此代码时,我收到错误,说:

Reference.update failed: 
First argument contains NaN in property 'posts.randompostkey.comments'

我的服务器

firebase server

3 个答案:

答案 0 :(得分:0)

解决方案是正确同步对数据的访问:首先确保所有内容都已加载,然后才更新分数。

请看 solution

答案 1 :(得分:0)

您需要使用的是 transaction

postRef.transaction(function (post) {
            if (post) {
                    post.commentCount++;
                }    
            }
            return post;
        });

通过这种方式,您可以获取数据,更新价值,然后以安全的方式将其发回,确保其他人不会同时更新

答案 2 :(得分:0)

在我看来,firebase拒绝存储NaN值(和未定义的值),即使我在文档中找不到此值也是如此。 确保不要将NaN值发送到firebase。