Правила Firestore - обновить блоки создать? - PullRequest
0 голосов
/ 04 октября 2018

У меня установлено следующее правило в моем хранилище:

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» генерирует случайный идентификатор, поэтому это не должно иметь значения.

...