从数据库读取的值是NaN
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从数据库读取的值是NaN相关的知识,希望对你有一定的参考价值。
我在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'
答案
从越过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;
以上是关于从数据库读取的值是NaN的主要内容,如果未能解决你的问题,请参考以下文章