2014-02-03 5 views
2

Когда правило безопасности firebase (.read/.write/.validate) терпит неудачу, он не работает без предупреждения FIREBASE WARNING: вошел в систему. Я хотел бы зафиксировать сбой и представить пользователю пользовательское сообщение (например, «не разрешено» и т. Д.) Как это можно достичь с помощью firebase/angularfire?Как захватить ошибки безопасности в firebase, angularfire?

PS: Я пытался добавить функцию обработчика ошибок для объекта angularfire обещания следующим образом, но это не похоже, чтобы вызвать функцию обработки ошибок, хотя функция успеха делает правильно срабатывать

$firebase(dataRef).$bind($scope, "data").then(
      function() { 
       console.log("success"); 
      }, 
      function (error) { 
       console.log("error encountered: " + error); 
      } 
      ); 
+0

В настоящее время невозможно перехватить эти ошибки в AngularFire, это будет исправлено в следующей версии. В то же время вы можете использовать обычный Firebase SDK - функция .on() выполняет второй обратный вызов, который будет вызываться при возникновении ошибки безопасности: https://www.firebase.com/docs/javascript/firebase/on .html – Anant

+0

@Anant Будет использоваться .on() в дополнение к регулярному привязке углового огня ($ firebase (dataRef). $ bind ($ scope, "data")) и дополнительный оператор для .on()? Или вы имели в виду, вместо() вместо привязки углового огня? Просьба уточнить. Примером, если это возможно, было бы особенно полезно. Благодарю. – Jarnal

+0

Я имею в виду использование .on() вместо углового огня (с целью обнаружения ошибки). Я отправлю пример в качестве ответа. – Anant

ответ

3

Вы можете использовать регулярный API Firebase, чтобы уловить такие ошибки безопасности:

+0

Будет ли это захватывать ошибки, вызванные другими пользователями, или только текущий сеанс просмотра? (извините, если это глупый вопрос, я предполагаю, что '.on ('value')' собирает изменения всех пользователей в реальном времени). – lefnire

+1

Это зависит от того, на что указывает 'dataRef'. Вы можете указать, что он указывает на конкретное местоположение пользователя или в корне, чтобы охватить все из них. – Anant

+1

он все еще бросает это уродливое исключение на консоль. здесь мой код ref.on («значение», функция (моментальный снимок) { console.log («Нет ошибок.»); }, function (err) { console.log («Что-то не так». + err); }); – ATHER

Смежные вопросы