Firebase云功能:'createId()'在服务器端可用吗?

dy1byipe  于 2023-03-19  发布在  其他
关注(0)|答案(2)|浏览(112)

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

const individualId = this.angularFirestore.createId();

但是如果我想在云函数中使用Firestore管理API做同样的事情,我找不到等效的操作。

const db = admin.firestore();

但是,创建的对象没有可用的createId()函数。
有没有可以在cloud函数中使用的createId()的等价物?

i1icjdpr

i1icjdpr1#

我从这个issue和这个article中理解到“AngularFirestore.createId()从名为'_'的符号集合中生成一个新的id”。
如果你想在云函数中模拟这种行为,你可以使用CollectionReferencedoc()方法,而不指定任何路径。你将得到一个DocumentReference,然后你可以使用id属性来获取“引用文档的最后一个路径元素”。
如下所示:

const db = admin.firestore();
const docRef = db.collection('_').doc();
const newId = docRef.id;

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

igetnqfo

igetnqfo2#

在JavaScript中,为新的Firebase 9(2022年1月)。在我的情况下,我正在开发一个评论部分:

const commentsReference = await collection(database, 'yourCollection');
await addDoc(commentsReference, {
  ...comment,
  id: doc(commentsReference).id,
  date: firebase.firestore.Timestamp.fromDate(new Date())
});

doc() Package 集合引用(commentsReference)提供了一个标识符(id

相关问题