def bubble_sort(a):
t = 0
sorted = False # sorted = False because we have not began to sort
while not sorted:
sorted = True # Assume sorted = True first, it will switch only there is any change
for key in range(1,len(a)):
if a[key-1] > a[key]:
sorted = False
t = a[key-1]; a[key-1] = a[key]; a[key] = t;
print a
Ваше правило if request.resource.data.m != resource.data.m
гласит, что поле m
может быть записано, только если оно не совпадает с текущим значением поля m
в том же документе .
Нет способа проверить наличие дубликатов во всей коллекции, так как для этого потребуется Cloud Firestore для чтения всех документов в коллекции (которая не масштабируется).
Единственный способ реализовать ограничение уникальности - создать отдельную коллекцию, в которой вы используете m
в качестве идентификаторов документов. Поскольку идентификаторы документов в коллекции по определению уникальны, вы можете применить там правило с помощью:
match /unique_ms/{m} {
allow create;
}
Вышеуказанное позволяет только создать документ, но не позволяет его обновить. Это означает, что если кто-то создал документ с определенным значением m
, никто не сможет его перезаписать.
Альтернативой с использованием правила write
может быть:
allow write: if !exists(/databases/$(database)/documents/unique_ms/{m});
Также см .: