我正在一个学校项目的网站上工作,其中包含您需要按下的按钮。按下该按钮时,该按钮将从数据库中获取一个值,即儿童' aantal'并添加1.完成后,它会将其重新上传回数据库。再往前一页,您可以看到该孩子的实时号码。问题是,这不适用于iOS 9或更低版本以及OSX Yosemite或更低版本。在Android和Windows上它工作正常。
可重复使用的代码;
这只是一个按钮。如果按下按钮,它会在int上添加1。这很奇怪,因为它并不适用于上述操作系统。
<script src="https://www.gstatic.com/firebasejs/3.6.9/firebase.js"></script>
<script language="JavaScript">
// Initialize Firebase
var config = {
apiKey: //API KEY,
authDomain: //FIRBASE DOMAIN,
databaseURL: //DATABASE URL,
storageBucket: //STORAGE BUCKET,
messagingSenderId: //MESGSENDID
};
firebase.initializeApp(config);
var number;
var database = firebase.database().ref().child('aantal');
function buy() {
database.on('value', snap => number = snap.val());
var count = parseInt(number, 10) + 1;
database.set(count);
}
</script>
此代码无效,初始化自己的Firebase项目进行测试。 出于安全原因,我删除了我的详细信息。
答案 0 :(得分:2)
修改强> 原来Safari(9.1 / iOS 9.3及以下版本)不支持箭头功能。
将database.on('value', snap => number = snap.val());
更改为database.on('value', function(snap) { number = snap.val()});
解决了问题。
嗯,我的意思是,该代码不应该在任何地方工作。
function buy() {
database.on('value', snap => number = snap.val());
var count = parseInt(number, 10) + 1;
database.set(count);
}
Firebase是异步的,您不会等待它实际从数据库中加载数字。
这应该有用。
function buy() {
database.on('value', snap => {
number = snap.val();
var count = parseInt(number, 10) + 1;
database.set(count);
});
}
我不知道这是否实际上是您遇到的问题,或者您是否只是在您的示例中写了这个问题。此外,在递增值时,您应该使用事务。
function buy() {
database.transaction(function(value) {
if (value) {
value++;
}
return value;
});
}