Я использую angular-ui-fullcalendar для отображения и редактирования событий. Пользователи могут войти в систему и иметь уникальный uid
при входе в систему. Я хочу использовать это, чтобы отличать события, сделанные текущим пользователем от других событий. Я хочу дать текущим пользовательским событиям еще один backgroundColor
.Фильтровать данные пользователем с angularfire
Каков наилучший способ для этого?
Я пробовал несколько вещей. Мои данные выглядит следующим образом:
```
database
bookings
-KWnAYjnYEAeErpvGg0-
end: "2016-11-16T12:00:00"
start: "2016-11-16T10:00:00"
stick: true
title: "Brugernavn Her"
uid: "1f17fc37-2a28-4c24-8526-3882f59849e9"
```
Я пытался фильтровать все данные с текущим UID пользователя, как этот
var ref = firebase.database().ref().child("bookings");
var query = ref.orderByChild("uid").equalTo(currentAuth.uid);
var bookings = $firebaseArray(query);
$scope.eventSources = [bookings];
Это ничего не возвращает. Если я опускаю фильтр в строке 2, он возвращает все заказы, как ожидалось. Но даже если бы фильтр работал, это не решило бы мою проблему, потому что я хочу получать как текущие пользовательские события, так и все другие события. Firebase не имеет «не равно» опцию фильтра ...
Я попытался перебрать каждую запись и сравнить UIDs и установки backgroundColor
если условие было выполнено:
var ref = firebase.database().ref().child("bookings");
var bookings = $firebaseArray(ref);
bookings.$ref().on("value", function(snapshot) {
var list = snapshot.val();
for (var obj in list) {
if (!list.hasOwnProperty(obj)) continue;
var b = list[obj];
if (b.uid === currentAuth.uid) {
b.className = "myBooking";
b.backgroundColor = "red";
}
}
});
$scope.eventSources = [bookings];
Но это вызывает асинхронные проблемы так массив 'bookings', присвоенный $ scope.eventSources, не был изменен. Я попытался переместить $ scope.eventSources = [заказы] внутри блока асинхронного кода, но FullCalendar, по-видимому, не может справиться с этим и ничего не делает.
Я также попытался это, но не повезло либо:
bookings.$loaded()
.then(function(data) {
$scope.eventSources = [data];
})
.catch(function(error) {
console.log("Error:", error);
});
Что является лучшим решением моей проблемы?
И пример этого очень прецедента [здесь] (https://gist.github.com/katowulf/f78d4a224c06a643ddfa) и [здесь] (http://jsfiddle.net/katowulf/uoe5yt8x/) – Kato