У меня установлено следующее правило в моем хранилище:
match /names/{nameId} {
allow read: if request.auth.uid != null;
allow update: if request.auth.token.creator == true && request.writeFields.size() == 1 && ('images' in request.writeFields);
allow create: if request.auth.token.creator == true;
}
Однако, когда я пытаюсь создать новый объект с помощью клиента java (kotlin):
val data = hashMapOf(
"name" to name
)
mFirestore.collection(COLLECTION_USERS).add(data)
.addOnSuccessListener { doc ->
Log.i(TAG, "On New Document: " + doc.id)
}.addOnFailureListener { ex ->
Log.w(TAG, "Failed adding document: ", ex)
}
Если я изменю правила для обновления так же, как и для создания:
match /names/{nameId} {
allow read: if request.auth.uid != null;
allow update: if request.auth.token.creator == true;
allow create: if request.auth.token.creator == true;
}
Теперь будет работать код Java.
Что мне здесь не хватает?почему создается блокировка обновления?
ps Просто чтобы убедиться, что я удаляю все документы из моей коллекции в firestore перед запуском кода.В любом случае, метод «add» генерирует случайный идентификатор, поэтому это не должно иметь значения.