Запретить запись элементов в области видимости в записи другого пользователя
Я имел успех с использованием AngularFire в сценарии, где в моем приложении есть один пользователь.
Теперь, когда у меня установлена аутентификация, яЯ заметил, что назначениеitems
в$scope.items
катастрофично при переключении пользователей, в основном из-за$scope
не удается обновить правильно.
Чтение прямо из документов ...
var ref = new Firebase('https://.firebaseio.com/items');
angularFire(ref, $scope, 'items');
Мне нужно, чтобы это было толькоitems
авторизованного пользователя. Так что в настоящее время я делаю это (если естьлучший способ, нестесняйтесь сказать мне!)
var ref = new Firebase('https://.firebaseio.com/items/userId');
angularFire(ref, $scope, 'items');
Я генерируюuserId
с помощьюauth.provider
а такжеauth.id
кстати Теперь, когда мои предметы расположены в пространстве имен (пустьскажите)user1
var ref = new Firebase('https://.firebaseio.com/items/[user1id]');
angularFire(ref, $scope, 'items');
Я добавляю предметы в$scope.items
$scope.create = function(item) {
$scope.items.push(item)
/* Pretend the user adds these from the interface.
[
{ name: 'eenie' },
{ name: 'meenie' },
{ name: 'miney' },
{ name: 'moe' }
]
*/
}
Эта проблема
Теперь, если я просто выйду и войду как кто-то другой, волшебным образом этот пользовательeenie meenie miney
а такжеmoe
так как$scope.items
провел массив между выходом из системы и входом в систему.
Я пытался установить$scope.items = []
на событие выхода из системы, но это фактически очищает все записи. Я'Я выдергиваю мои волосы. Это 0,001% от того, что мне нужно сделать в моем проекте, и этоберу все мои выходные.
Обновить Новый метод
$scope.create = function() {
$scope.selectedDevice = {
name: 'New Device',
userId: $scope.user.provider + $scope.user.id
};
return $scope.devices.push($scope.selectedDevice);
};
$scope.$on('angularFireAuth:login', function(evt, user) {
var promise, ref;
ref = new Firebase('https://mysite.firebaseio.com/users/' + (user.provider + user.id) + '/registry/');
promise = angularFire(ref, $scope, 'devices');
});
Теперь он будет точно создавать элементы под пользователяИдентификатор Тем не менее, после выхода и повторного входа эти элементы не удаляются из$scope.devices
, Следовательно, они просто добавляют себя к данным, но под новым пользователем.
Обновить
Я сделал много проб и ошибок. Я наверное поставил$scope.devices
в[]
и перемещал события входа в систему в каждой возможной комбинации. То, что в итоге сработало, было @hiattp 'трезвый в принятом ответе.