我在Firebase中遇到问题,当我尝试从数据库中读取值时,会得到NaN值。
var database = firebase.database();
// Initializing our click count at 0
var clickCounter = 0;
// should read the value in the database:
database.ref().once('value').then(function(snapshot){
clickCounter = snapshot.clickCount;
});
// On Click
$("#click-button").on("click", function() {
// Add 1 to clickCounter
clickCounter++;
database.ref().set({
clickCount: clickCounter
});
基本上,如果我删除了从数据库中读取值的功能(代码的第3行),那么当我单击按钮时,数据库中的值就会更新。但是,刷新后,单击按钮会将数据库中的clickCount重置为1,因为clickCounter在第一行中初始化为0。
当然,这只是意味着我需要从数据库中读取值,以便浏览器刷新时不会将clickCounter重置为0。
当我包含从数据库读取值的函数时,出现此错误: Uncaught Error: Reference.set failed: First argument contains NaN in property 'clickCount'
答案 0 :(得分:1)
通过查看documentation,我看到了以下示例:
var userId = firebase.auth().currentUser.uid;
return firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
var username = (snapshot.val() && snapshot.val().username) || 'Anonymous';
// ...
});
在您的代码中:
// should read the value in the database:
database.ref().once('value').then(function(snapshot){
clickCounter = snapshot.clickCount; //<--- Missing access of .val()
});
您需要:
clickCounter = snapshot.val()。clickCount;