我使用angularfire将数据保存到我的firebase中。这是一个快速代码。
$scope.users.$add({
Name:$scope.username,
Age:$scope.newage,
Contact: $scope.newcontact,
});
alert('Saved to firebase');
我成功地将这些数据发送到了我的firebase,但是如果这些数据没有成功保存,我如何才能发现错误?有什么想法吗?
编辑
所以在实现了then((函数之后。
$scope.users.$add({
Name:'Frank',
Age:'20',
Contact: $scope.newcontact,
}).then(function(ref) {
alert('Saved.');
}).catch(function(error) {
console.error(error); //or
console.log(error);
alert('Not Saved.');
});
当连接到互联网时。then((函数很好。在显示警报之前,它会等待这些数据保存在firebase中。我想要的是它告诉我数据没有保存。当我关闭互联网连接并提交这些数据时,catcherror函数不会启动。
当您调用$add()
时,它会返回一个promise。要检测数据的保存时间,请执行then()
。要检测保存失败,请执行catch()
:
var list = $firebaseArray(ref);
list.$add({ foo: "bar" }).then(function(ref) {
var id = ref.key;
console.log("added record with id " + id);
list.$indexFor(id); // returns location in the array
}).catch(function(error) {
console.error(error);
});
请参阅add()
的文档。
更新
当涉及到Firebase数据库时,检测何时由于没有网络连接而无法保存数据是一个非常不同的问题。在这种情况下无法保存不是错误,而只是暂时的情况。此条件不仅适用于此set()
操作,而且适用于所有读/写操作。出于这个原因,您应该通过检测连接状态来更全局地处理它:
var connectedRef = firebase.database().ref(".info/connected");
connectedRef.on("value", function(snap) {
if (snap.val() === true) {
alert("connected");
} else {
alert("not connected");
}
});
通过收听.info/connected
,您的代码可以知道用户没有连接到Firebase数据库,并根据应用程序的需要进行处理。