ionic框架-在向firebase添加数据时,如何在Angularfire上未发送数据时捕捉错误



我使用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数据库,并根据应用程序的需要进行处理。

相关内容

  • 没有找到相关文章

最新更新