我使用简单的AngularJS服务来检测用户是否使用存储在本地存储中的经过身份验证的密钥登录。如果用户已通过身份验证,则应用程序会到达firebase以获取数据。
这适用于登录用户并将其注销。问题是当会话自动过期时,应用程序会尝试抓取数据而不知道会话已过期,并且由于安全规则而返回错误。
$firebase(dataBase.child(permanentStorage['uid']).child('Notes')).$asArray();
// var permanentStorage = window.localStorage;
我找不到任何方法将回调函数添加到上面的代码中。
答案 0 :(得分:4)
大多数方法都会返回一个承诺。 Promises提供成功和错误回调。从服务器收到数据后会触发$loaded
方法,因此它为您的请求提供了一个很好的用例:
var list = $firebase(dataBase.child(permanentStorage['uid']).child('Notes')).$asArray();
list.$loaded().catch(function(err) {
console.error(err);
});
但是,Firebase会针对任何安全错误(无法检索数据)引发console.warn或console.error,因此这不是必需的。