使用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'
答案 0 :(得分:0)
解决方案是正确同步对数据的访问:首先确保所有内容都已加载,然后才更新分数。
请看 solution
答案 1 :(得分:0)
您需要使用的是 transaction 。
postRef.transaction(function (post) {
if (post) {
post.commentCount++;
}
}
return post;
});
通过这种方式,您可以获取数据,更新价值,然后以安全的方式将其发回,确保其他人不会同时更新
答案 2 :(得分:0)
在我看来,firebase拒绝存储NaN值(和未定义的值),即使我在文档中找不到此值也是如此。 确保不要将NaN值发送到firebase。