2016-12-22 2 views
0

Каких firebase правил необходимы, чтобы избежать дублирования записей в массиве пользователей ниже на SLIST уровня сбораFirebase правило, чтобы избежать дублирования записи

"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

Если это uid, созданные Firebase (или childByAutoId), они всегда будут уникальными и никогда не будут дублироваться. В каком состоянии у вас есть дубликаты идентификаторов пользователей? Кроме того, каково ожидаемое поведение? @Frankvanpuffelen имеет супер быстрый ответ, и, хотя он будет «предотвращать» дубликаты, если вы каким-то образом сумеете получить дубликат, он перезапишет то, что есть, т.е. если вы пишете узел -KZawhnFZLcqFKNwZnSi: false, он просто перезапишет узел при смене ответа значение от true до false. Вы действительно хотите, чтобы Firebase ошибочно, если это дубликат? – Jay

ответ

1

Что вы пытаетесь модель представляет собой набор: коллекция уникальные записи.

То, что вы смоделировали, представляет собой массив: последовательность неповторимых записей.

Простейшим и лучшим решением является изменение вашей модели данных для фактического отражения набора. Ближайшим вы можете получить, что в Firebase является:

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

С таким типом заданной структурой, дубликаты автоматически предотвращены самой структурой данных. Вам не нужно будет писать правила безопасности для этого.

Смежные вопросы