FirebaseDatabase web iOS/OSX
我正在为一个学校项目开发一个网站,其中包含一个你需要按下的按钮。按下按钮时,该按钮从数据库中获取一个值,子“aantal”并添加1。完成后,它会将其重新上传回数据库。再往前一页,你就可以看到那个孩子的活号码了。问题是,这在iOS 9或更低版本以及OSX Yosemite或更低版本上不起作用。在android和windows上,它运行良好 可重用代码 这只是一个按钮。如果你按下按钮,它会在int上加1。这很奇怪,因为它在上面提到的操作系统上不工作FirebaseDatabase web iOS/OSX,ios,macos,firebase,firebase-realtime-database,Ios,Macos,Firebase,Firebase Realtime Database,我正在为一个学校项目开发一个网站,其中包含一个你需要按下的按钮。按下按钮时,该按钮从数据库中获取一个值,子“aantal”并添加1。完成后,它会将其重新上传回数据库。再往前一页,你就可以看到那个孩子的活号码了。问题是,这在iOS 9或更低版本以及OSX Yosemite或更低版本上不起作用。在android和windows上,它运行良好 可重用代码 这只是一个按钮。如果你按下按钮,它会在int上加1。这很奇怪,因为它在上面提到的操作系统上不工作 <script src="https://w
<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
变量配置={
apiKey://API-KEY,
authDomain://FIRBASE域,
databaseURL://数据库URL,
storageBucket://存储桶,
messagingSenderId://MESGSENDID
};
firebase.initializeApp(配置);
var数;
var database=firebase.database().ref().child('aantal');
功能购买(){
database.on('value',snap=>number=snap.val());
var count=parseInt(数字,10)+1;
数据库设置(计数);
}
此代码将不起作用,请初始化自己的Firebase项目以进行测试。
出于安全原因,我删除了我的详细信息。编辑
原来Safari(9.1/iOS 9.3及以下版本)不支持箭头功能
更改database.on('value',snap=>number=snap.val())
到数据库.on('value',函数(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;
});
}
到底是什么不起作用?我猜问题出在某些版本的Safari上,而不是在iOS上?什么都不管用。浏览器不会添加1,也不会显示数据库中的数字。有解决safari bug的方法吗?你没有在私人浏览模式下使用safari,对吗?不,我没有。我甚至检查了safari的设置,看看是否启用了JavaScript。您将获得当前用户,增加它并保存。使用完成块,您可以重定向。我将firebase与swift一起使用,因此无法提供示例代码。我尝试了此代码,但在safari中仍然不起作用。它在chrome tho中运行,就像我的原始代码一样。你是如何测试它的?在实际设备上?它在iOS 8.4模拟器上运行良好。是的,我在Safari的macbook OSX el capitan上测试了这段代码。给我一些,我去买我妹妹的macbook,应该也是一个相当低的版本。谢谢。虽然el capitan并不特别低。。难道它不能处理它吗?