Firestore - предотвращает перезапись, когда документ уже существует при создании документов с пользовательским идентификатором - PullRequest
0 голосов
/ 20 июня 2019
this.collection()
      .doc<MyModel>(documentId)
      .set(data);

Я хочу создать документ с пользовательским идентификатором документа, поэтому не могу использовать add() в коллекции, но set() в документе работает.Проблема в set() перезаписывается, если документ существует.Я хочу предотвратить такое поведение, создать документ тогда и только тогда, когда идентификатор уже не существует.

1 Ответ

1 голос
/ 20 июня 2019

Если вы хотите предотвратить перезапись в коде, рассмотрите возможность использования update(). Обновление обновит документ данными, которые вы ему предоставили, но не создаст его, если он не существует.

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


Если вы хотите разрешить только создание документа и запретить обновления и удаления, используйте следующие правила:

service cloud.firestore {
  match /databases/{database}/documents {
    // A write rule can be divided into create, update, and delete rules
    match /cities/{city} {
      allow create: if true;
      allow update: if false;
      allow delete: if false;
    }
  }
}
...