2016-11-09 5 views
1

Ich habe eine locations-orders Tabelle, die wie folgt aussieht:Firebase: Wie füge ich einen Index für ein verschachteltes Feld hinzu?

{ 
    "0BW3H9T3R7HJB" : { 
    "orders" : { 
     "01750ea0-4980-4bc4-58b2-988c02324e671478636582396" : { 
     "created_at" : 1478636560000, 
     }, 
     "01750ea0-4980-4bc4-58b2-988c02324e671478636582483" : { 
     "created_at" : 1478636560000, 
     } 
    } 
} 

Jeder Standort-Aufträge Knoten einen orders Knoten mit mehreren Schlüsseln/Objekte hat. Diese Objekte haben ein created_at Feld.

Ich habe diese auf meine Datenbank Regeln:

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "users": { 
     ".indexOn": "merchantId" 
    }, 
    "merchants": { 
     ".indexOn": "locations" 
    }, 
    "locations-orders": { 
     ".indexOn": ["orders/created_at"] 
    } 
    } 
} 

jedoch noch Firebase beschwert, dass ich einen Index bin fehlt:

Using an unspecified index. Consider adding ".indexOn": "created_at" at /locations-orders/1JS53G0TT5ZQD/orders to your security rules for better performance 

ich etwas laufen Bin soll den Index erstellen ? Oder ist es falsch geschrieben?

=== === UPDATE

ich meine Akte zu schauen geändert:

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "users": { 
     ".indexOn": "merchantId" 
    }, 
    "merchants": { 
     ".indexOn": "locations" 
    }, 
    "locations-orders": { 
     "$location_id": { 
     ".indexOn": ["orders/created_at", "orders/status_updated_at"] 
     } 
    } 
    } 
} 

aber ich habe immer noch die gleiche Warnung:

Using an unspecified index. Consider adding ".indexOn": "created_at" at /locations-orders/1JS53G0TT5ZQD/orders to your security rules for better performance 
+0

Sie haben Bilder des JSON-Baums und Regeln in Ihre Frage aufgenommen. Bitte ersetzen Sie diese durch die tatsächlichen JSONs und Regeln als Text, die Sie einfach erhalten, wenn Sie in der Firebase-Datenbankkonsole auf die Schaltfläche "Exportieren" klicken. Da der JSON als Text durchsuchbar ist, können wir ihn einfach verwenden, um mit Ihren tatsächlichen Daten zu testen und sie in unserer Antwort zu verwenden, und im Allgemeinen ist dies nur eine gute Sache. –

+0

wird sicher tun !!! – Edmund

+0

@FrankvanPuffelen aktualisiert! – Edmund

Antwort

1

Try this:

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "users": { 
     ".indexOn": "merchantId" 
    }, 
    "merchants": { 
     ".indexOn": "locations" 
    }, 
    "locations-orders": { 
     "orders": { 
     "$orderid": { 
      ".indexOn": "created_at" 
     } 
     } 
    } 
    } 
} 
3

Wenn Sie l Bei Ihrer Datenstruktur gibt es keine orders/created_at unter /location-order/$orderId.

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "users": { 
     ".indexOn": "merchantId" 
    }, 
    "merchants": { 
     ".indexOn": "locations" 
    }, 
    "locations-orders": { 
     "$someid": { 
     ".indexOn": ["orders/created_at"] 
     } 
    } 
    } 
} 
+0

spielt es eine Rolle, was ich für '$ someid' schreibe? – Edmund

+0

Nein. Es ist genau wie ein Variablenname in Ihrem tatsächlichen Code: Solange Sie den gleichen Wert innerhalb der Regel verwenden (hier nicht benötigt), spielt der tatsächliche Name keine Rolle. –

+0

Ich muss keinen Befehl ausführen oder irgendetwas? Ich habe es aktualisiert, um so zu sehen, aber es zeigt immer noch den Fehler – Edmund

Verwandte Themen