从数据库读取的值为NaN

时间:2018-12-27 06:18:47

标签: database firebase firebase-realtime-database

我在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'

1 个答案:

答案 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;