Firebase 云函数:`createId()` 在服务器端可用吗?

Rob*_*don 3 firebase google-cloud-platform google-cloud-functions google-cloud-firestore

如果我想从客户端写入数据库,我可以AngularFirestore使用以下命令注入一个实例并自动生成一个 id createId()

const individualId = this.angularFirestore.createId();
Run Code Online (Sandbox Code Playgroud)

但是,如果我想在云函数中使用 Firestore 管理 API 执行相同的操作,我找不到等效的操作。我可以通过运行在云函数中创建 Firestore 实例

const db = admin.firestore();
Run Code Online (Sandbox Code Playgroud)

但是,创建的对象没有createId()可用的功能。

是否有与createId()我可以在云功能中使用的等效功能?

Ren*_*nec 6

我从这个问题和这篇文章中了解到“AngularFirestore.createId()从名为'_'的符号集合生成一个新的id”。

如果您想在云函数中模仿这种行为,您可以使用doc()a 的方法CollectionReference而不指定任何路径。您将得到一个DocumentReference,然后您可以使用该id属性来获取“引用文档的最后一个路径元素”。

像下面这样:

const db = admin.firestore();
const docRef = db.collection('_').doc();
const newId = docRef.id;
Run Code Online (Sandbox Code Playgroud)

请注意,正如上面提到的问题中所解释的,“使用通用集合而不是实际集合”来生成 id 有点奇怪,因为您通常会使用要在其中创建新文档的集合。但这不是问题,根据James Daniels(Firebaser)的评论,因为 Firestore 自动生成的 ID“只是一个随机字符串,根本不考虑路径”。