这是我要实现的目标,我想要数据库中每个文档的唯一ID字段,并且希望该唯一ID与文档ID相同。
例:
documents: data:
eBgdTRE123 id:'eBgdTRE123'
name:'Jhon Doe'
job:'Programmer'
我希望我的数据库具有这种结构,现在我有两个想法可以实现这一目标
1:使用云功能并具有onCreate
侦听器,每次有一个新的文档抓取文档并设置id字段并在此处更新它,这就是我的做法
exports.addDocIdToField =
functions.firestore.document('collectionname/{docID}').onCreate((snap,context) => {
const id = context.params.docID;
return admin.firestore().collection('collectionname')
.doc(id).set({ id: snap.id }, { merge: true })
.then(() => {
return null;
})
.catch((error) => {
return null;
});
})
2:在创建文档时使用上述方法。添加新文档后立即添加新文档,并获取新添加的文档并更新其id
他们两个都可以工作,但是我的问题是我可以依靠这种手术吗?我的意思id
是,无论如何,undefined
它可能会在应用程序中进一步导致错误。
还是有其他方法可以做到这一点?
使用此doc()
方法,有一种更简单的方法来实现该目标,如下所示(此处为JavaScript SDK)
var newDocRef = db.collection('collectionname').doc();
newDocRef.set({
name:'Jhon Doe',
job:'Programmer',
id: newDocRef.id
})
如文档中所述:
(该
doc()
方法)获取指定路径中集合内文档的DocumentReference。如果未指定路径,则将自动生成的唯一ID用于返回的DocumentReference。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句