是否可以使用 Firebase .doc() 接收重复的 ID?
Is it possible to receive duplicate IDs with Firebase .doc()?
如 Firebase documentation 中指定,.doc()
创建一个唯一 ID。
我通过以下方式为 Firestore 创建新文档(注意 session.docId
应该等于实际文档 ID,我使用的是 AngularFire 语法):
const id = db.createId();
const session = { docId: id, name: "test" };
this.db.collection("sessions").doc(id).set(session);
.doc()
是否保证上述工作流程始终有效(意味着 id
始终是唯一的)?
假设我有一个充满会话的数组(例如 10000 个项目)——我遍历这个数组并按照我在上面指定的方式为每个项目创建一个会话文档。考虑到 Javascript 的异步性质,我非常怀疑这是否会在某个时候产生重复的 ID(尽管由于 docId
的长度等因素而不太可能)。还是 .doc()
将 ID“保留”一段有限的时间?
我知道我也可以通过 .add()
创建一个新文档,然后通过 .set()
更新 docId
,但是这种方法需要 2 次写入操作,而且慢得多。
doc()
始终在客户端应用程序上立即 生成具有随机 ID 的 DocumentReference(非异步),这实际上保证是唯一的。两个 ID 之间发生冲突的可能性极低。它实际上与调用 add()
相同,只是它实际上并不是同时创建文档。
请注意 doc()
不直接 return 字符串 ID - 它 return 是一个包含 ID 的 DocumentReference。
另请参阅:
如果出于某种原因您不信任这种生成 ID 的方法,您可以自行生成 ID。它只是一个字符串。
如 Firebase documentation 中指定,.doc()
创建一个唯一 ID。
我通过以下方式为 Firestore 创建新文档(注意 session.docId
应该等于实际文档 ID,我使用的是 AngularFire 语法):
const id = db.createId();
const session = { docId: id, name: "test" };
this.db.collection("sessions").doc(id).set(session);
.doc()
是否保证上述工作流程始终有效(意味着 id
始终是唯一的)?
假设我有一个充满会话的数组(例如 10000 个项目)——我遍历这个数组并按照我在上面指定的方式为每个项目创建一个会话文档。考虑到 Javascript 的异步性质,我非常怀疑这是否会在某个时候产生重复的 ID(尽管由于 docId
的长度等因素而不太可能)。还是 .doc()
将 ID“保留”一段有限的时间?
我知道我也可以通过 .add()
创建一个新文档,然后通过 .set()
更新 docId
,但是这种方法需要 2 次写入操作,而且慢得多。
doc()
始终在客户端应用程序上立即 生成具有随机 ID 的 DocumentReference(非异步),这实际上保证是唯一的。两个 ID 之间发生冲突的可能性极低。它实际上与调用 add()
相同,只是它实际上并不是同时创建文档。
请注意 doc()
不直接 return 字符串 ID - 它 return 是一个包含 ID 的 DocumentReference。
另请参阅:
如果出于某种原因您不信任这种生成 ID 的方法,您可以自行生成 ID。它只是一个字符串。