2017-10-26 5 views
1

Unsere Datenbankstruktur sieht wie folgt aus:Firestor Sicherheitsregeln, verschachteltes Feld

trips 
    12345 
     toArea 
     radius: 150 
     name: "citycenter" 
    54321 
     toArea 
     radius: 250 
     name: "main street" 

Wir haben versucht, einige Regeln für Lese von Dokument zu erstellen:

match /chats/{trip} { 
    match /messages/{message} { 
     allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea != null 
    } 
} 

Es funktioniert gut, ist

aber die nächsten Regeln funktionieren nicht:

allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea != null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea.radius != null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea.radius == null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea["radius"] == null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea["radius"] != null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data["toArea.radius"] == null 
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data["toArea.radius"] != null 

Ich verstehe wirklich nicht, was falsch damit ist, wie zwei entgegengesetzte Regeln (== null /! = Null) nicht funktionieren könnten. Wie können wir mit Feldern toArea.radius in Regeln verwalten?

+0

versuchen Sie '.data.toArea.data.radius' – Hareesh

+0

Wir haben derzeit ein Problem mit verschachtelten Eigenschaften in Regeln, das ist fast definitiv nicht deine Schuld. Wir arbeiten daran, so schnell wie möglich eine Lösung bereitzustellen, danke für Ihre Geduld! –

+0

würde es '.data.field.data' konsistent sein? – iiylll

Antwort

2

EDIT (12/18/17): Diese beiden sind jetzt behoben, so sollte dies Just Work ™.

Wie @hatboysam erwähnt, sind Sie zur Zeit schlagen zwei Fehler, die wir schnell arbeiten zu beheben:

  1. get().data funktioniert nur, wenn es einen Verweis ist auf resource.data oder request.resource.data irgendwo in Ihren Regeln (wir früher Unterstützung get() Rückgabe der resource ohne data zu verwenden, aber das endete problematisch, so wurde es direkt vor der Veröffentlichung geändert).
  2. Verschachtelte Eigenschaften (z. B. toArea.radius) sind beschädigt.

1 ist einfach, um zu arbeiten:

match /chats/{trip} { 
    match /messages/{message} { 
     allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea != null 
    } 
} 
match /bogusPathThatWillNeverMatch { 
    allow read: if resource.data != null; // should never be true 
} 

Beide 1 und 2 werden in Kürze festgelegt werden, so dass für Auflösung stay tuned.

+1

Können Sie uns in die Richtung eines Bug-Trackers zeigen, wo wir Updates zu diesem Thema abonnieren können, @ mike-mcdonald? :-) – sindrenm

Verwandte Themen