【问题标题】:Creating new docs without auto-ids without accidentally referencing an existing doc在不意外引用现有文档的情况下创建没有自动 ID 的新文档
【发布时间】:2018-08-19 23:49:12
【问题描述】:

如果我有一组文档,其中提供了 ID(即不是 Firestore 自动 ID),我如何确定创建新文档而不是引用现有文档?

例如,如果我有一个集合 foo,文档 ID 为 bar,我可以将其引用为(假设 db 是注入的 AngularFirestore 服务)this.db.doc('foo/bar')

然后我想创建另一个foo doc,我可以检查它是否已经存在,例如

checkExits(id: string): Observable<boolean> {
  const docRef = this.db.doc(`foo/${id}`);
  return docRef.snapshotChanges().map(change => change.payload.exists);
}

但是,在我检查它是否存在时,创建文档时,它是否有可能被创建?这样当我尝试创建新文档时,它会引用现有文档并覆盖它?即this.db.doc('foo/bar').set({})

如何创建指定 id 的新文档,同时避免引用现有文档(如果存在则抛出错误)。

【问题讨论】:

    标签: google-cloud-firestore angularfire2


    【解决方案1】:

    为此,您需要use a transaction。在事务中,您首先在该位置调用get(),以确保nothing exists。然后你write to the same location,创建文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多