2016-12-22 4 views
0

Was die Feuerbasis Regeln sind erforderlich, zu Modell sList SammlungsebeneFirebase Regeln doppelte Einträge zu vermeiden

"sList" : { 
    "-KZawgegLrIyq9h6GSf8" : { 
     "name" : "Test", 
     "users" : [ "-KZawhnFZLcqFKNwZnSi", "-KZawhnFZLcqFKNwZnSi", "-KZawhnFZLcqFKNwZnSi", "-KZawhnFZLcqFKNwZnSi", "-KZawxBSAwL-lbi7dF-h", "-KZawxBSAwL-lbi7dF-h", "-KZawxBSAwL-lbi7dF-h", "-KZawxBSAwL-lbi7dF-h", "-KZawxBgz8k7v8-fKpDV", "-KZawxBgz8k7v8-fKpDV", "-KZawxBgz8k7v8-fKpDV", "-KZawxBgz8k7v8-fKpDV" ] 
    } 
    } 
+0

Wenn diese von Firebase (oder childByAutoId) erstellt werden, werden sie immer eindeutig und niemals dupliziert. In welchem ​​Zustand würden Sie doppelte Benutzer-IDs haben? Was ist das erwartete Verhalten? @FrankvanPuffelen hat eine superschnelle Antwort und während es "Duplikate" verhindert, wenn Sie irgendwie ein Duplikat haben, würde es überschreiben, was dort ist, dh wenn Sie einen Knoten -KZawhnFZLcqFKNwZnSi schreiben: false wird es nur den Knoten in der Antwort überschreiben der Wert von wahr zu falsch. Möchten Sie Firebase tatsächlich Fehler, wenn es ein Duplikat ist? – Jay

Antwort

1

Was Sie versuchen, ist auf doppelte Einträge in folgenden Benutzer Array zu vermeiden, ein Satz: eine Sammlung von eindeutige Einträge.

Was Sie modelliert haben, ist ein Array: eine Folge von nicht eindeutigen Einträgen.

Die einfachste und beste Lösung besteht darin, Ihr Datenmodell so zu ändern, dass es ein Set tatsächlich widerspiegelt. Die nächstgelegene Sie, dass in Firebase bekommen kann, ist:

"sList" : { 
    "-KZawgegLrIyq9h6GSf8" : { 
     "name" : "Test", 
     "users" : { 
     "-KZawhnFZLcqFKNwZnSi": true, 
     "-KZawxBSAwL-lbi7dF-h": true, 
     "-KZawxBgz8k7v8-fKpDV": true 
     } 
    } 
    } 

Mit einem solchen Satz artige Struktur, Duplikate werden durch die Datenstruktur selbst automatisch verhindert. Sie müssen dafür keine Sicherheitsregeln schreiben.