Dlaczego ten Firebase „.indexOn” nie działa?

głosy
7

Więc mam danych tak jak poniżej:

pushNotifications {
    -K - RwEgd541PIGNOXXUH: {
        message: Xiaoyu Hugh Hou bid at $900 on your task: New P...
        notifyId: facebook:10100683829966199
        relatedTask: -Jzl8XKaxGCv19nIOChm
        timestamp: 1443594566599
    } - K - RwpcBlQa04VJT4Bwm: {
        message: Sam Feldt bid at $1100 on your task: New Post g...
        notifyId: google:1043268349966197
        relatedTask: -Jzl8XKaxGCv19nIOChm
        timestamp: 1443594721963
    } - K - RwuM3 - 0 G0q9I96WHg: {
        message: Sam Feldt bid at $600 on your task: NO Firebase...
        notifyId: facebook:10100683829966199
        relatedTask: -JzTSk2TIlO46oVqJ1Nn
        timestamp: 1443594741347
    }
}

W moim kodu, muszę uzyskać najnowsze powiadomienie poniżej pewnej „notifyId”. Oto kod:

ref.child('pushNotifications')
   .orderByChild(notifyId)
   .limitToLast(1)
   .on(child_added, function (snapshot) {
       console.log(Found a new notification...);
       sendPush(snapshot.val());
   });

W moim Firebase reguły bezpieczeństwa, mam tę regułę indeksu:

 pushNotifications: {
      .read: auth != null,
      .write: auth != null,
      $pushId: {
        .indexOn: [notifyId, timestamp],
      }
    },

Jest to struktura indeksu obserwacji przez Firebase docs tutaj: docs

Ale kiedy uruchomić kod, konsola nadal zalogować

Firebase OSTRZEŻENIE: Użycie indeksu nieokreślony. Rozważyć dodanie „.indexOn”: «notifyId» w / pushNotifications do reguł bezpieczeństwa dla lepszej wydajności

Co nie ma sensu, ponieważ zrobiłem to już. Proszę pomóż!

Utwórz 30/09/2015 o 07:19
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
23

Trzeba umieścić .indexOnjeden poziom wyższy niż tego, co zrobiłeś:

 "pushNotifications": {
    ".read": "auth != null",
    ".write": "auth != null",
    ".indexOn": ["notifyId", "timestamp"]
},

Dla porównania zawsze patrzeć na Firebase dokumentacją dotyczącą indeksów , który korzysta z tego przykładu JSON:

"dinosaurs": {
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

Z tej zasady indeksowania:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}
Odpowiedział 30/09/2015 o 14:26
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more