Firestore-在创建具有自定义ID的文档时防止文档已经存在时覆盖

时间:2019-06-20 10:10:55

标签: google-cloud-firestore

this.collection()
      .doc<MyModel>(documentId)
      .set(data);

我想创建一个具有自定义文档ID的文档,因此不能在集合上使用add(),但是在文档上使用set()即可。问题是如果文档存在,set()将被覆盖。我想防止这种情况,仅当ID不存在时才创建文档。

2 个答案:

答案 0 :(得分:1)

如果要防止覆盖代码,请考虑使用update()。更新将使用您提供的数据来更新文档,但是如果不存在,则不会创建该文件。

或者,您可以use security rules在服务器上强制执行此行为。


如果只希望创建文档,并且不允许更新和删除,请使用以下规则:

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;
    }
  }
}

答案 1 :(得分:0)

如果您正在寻找一种创建不存在的文档并更新它的方法,请查看以下方法:Github comment