2017-07-23 5 views
1

Ich habe eine Frage bezüglich der Indexierung von Firebase. Hier ist meine Feuerbasis Struktur:Firebase IndexOn Warnmeldung

merchants { 
    merchantID1 : { 
     merchantName : 
     branches : { 
      branchID1 : { 
       branchAddress : 
      } 
     } 
    } 
} 

Meine Indizierungsregel bei Feuerbasis Standort:

"merchants": { 
     ".indexOn": ["merchantName"] 
}, 

Ich habe zwei verschiedene orderByChild Abfrage von JavaScript. Einer fragt merchantName, der andere ist branchAddress. Nachdem ich bei Firebase die indexOn merchantName rule hinzugefügt habe, verschwand die Warnmeldung. Allerdings, wenn ich eine andere Funktion ausführen, die die branchAddress abfragt, ich diese Warnmeldung erhalten:

FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": 
"branchAddress" at /merchants/-KpeV5_lnWA2Zd_g7x8C/branches to your security 
rules for better performance 

Wie kann ich eigentlich die indexOn Regel auf verschiedenen Ebene eines Kindes angeben?

Antwort

2

$childKey entspricht einem beliebigen Kindschlüssel. Also müssen Sie dieses Konzept hier verwenden.

Ihre db Regel ändern:

"merchants": { 
    ".indexOn": ["merchantName"], 
    "$merchantId": {/*This matches all keys*/ 
     "branches": { 
      ".indexOn": ["branchAddress"] 
     } 
    } 
} 
+0

ich sehe ich sehe. Vielen Dank! – hyperfkcb

+0

Gerne helfen :) –

+0

Hey sorry nur eine kurze Überprüfung mit Ihnen bezüglich der Firebase-Regel. Warum schreibt der Entwickler normalerweise diese ".validate" -Regel auf der Firebase-Site, da die Validierungen vor dem Posten auf der Datenbank-Site auf der Client-Site durchgeführt werden sollten? Gibt es einen Grund, diese ".validate" -Regel auf der Firebase-Site zu schreiben? Ist es manchmal so, dass Daten, die wir an die Datenbank-Site senden, zufällig auftreten, dass die Daten möglicherweise beschädigt werden? Deshalb sollten wir vor dem Einfügen eine weitere Überprüfung durchführen. – hyperfkcb