#angularjs #firebase #angularfire
# #angularjs #firebase #angularfire
Вопрос:
Я пытаюсь зафиксировать изменения во вложенном массиве в моих данных Firebase. Данные расположены следующим образом:
- Вызовы
- (Уникальный идентификатор Firebase)
- Станция: «Foobar»
- Время: «20:30»
- Ответчики
- (Уникальный идентификатор Firebase)
- Имя: «Фрэнк»
- Аватар: «foo.jpg «
- (Уникальный идентификатор Firebase)
- Имя: «Марта»
- Аватар: «bar.jpg «
- (Уникальный идентификатор Firebase)
- Ответчики
- (Уникальный идентификатор Firebase)
Мне нужно отслеживать, когда изменяются вызовы и когда добавляются или удаляются ответчики. С чем я борюсь, так это с отслеживанием ответчиков на вызов — у меня не будет случайных идентификаторов заранее, поэтому мне нужно отслеживать в режиме реального времени, когда вызовы и ответчики на каждый вызов меняются.
Вот что у меня есть на данный момент. Отсутствует некоторый код, связанный с путями и получением JWT-
var ref = new Firebase('https://foobar.firebaseio.com/clients/' clientAuth);
var callRef = ref.child('calls');
$scope.activeCalls = 0;
$scope.calls = $firebase(callRef);
$scope.calls.$on("change", function() {
var keys = $scope.calls.$getIndex();
$scope.activeCalls = keys.length;
keys.forEach(function(key, i) {
console.log($scope.calls[key].responders);
// This provides an object with array of responders
});
});
Обновить
Я вспомнил child_added
из обычной Firebase .. придумал это. Более красноречивый способ был бы оценен, я пытаюсь сохранить это более угловым.
$scope.calls.$on("child_added", function(v) {
console.log(v.snapshot.value); // This gives me the details I need
});
Комментарии:
1. Я не совсем понимаю вашу цель здесь. Созданный вами объект $firebase автоматически синхронизирует все изменения с ответчиками. Вы просили более красноречивый способ, но мне трудно понять, что более красноречиво, чем «автоматический». Я думаю, что здесь может помочь некоторый контекст; это немного похоже на проблему XY . Кроме того, ознакомьтесь с рекомендациями по использованию массива; как правило , вы хотите избежать их в распределенных данных.
2. Мне нужно знать, когда ответчик добавляется или удаляется из вызова, а затем изменять элементы в DOM на основе свойств ответчика. Например, изменение их списка как доступных для выполнения этого вызова. Мне также нужно посмотреть, какие респонденты участвуют в этом вызове.
3. Кроме того, я думаю, что я ясно дал понять, в чем проблема — сложность получения свойств объекта-ответчика при его добавлении или удалении из этого вызова. И когда я перечисляю (случайный идентификатор), я на самом деле имел в виду уникальный идентификатор, назначаемый Firebase при вводе данных.
4. Я все еще пытаюсь найти решение этой проблемы. Буду признателен за любую помощь. Извлечь вложенные данные не должно быть так сложно.