Node.js 将文档id作为字段id包含在firestore中
这就是我试图实现的目标,我希望数据库中的每个文档都有一个唯一的id字段,并且我希望该唯一id与文档id相同 例如:Node.js 将文档id作为字段id包含在firestore中,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,这就是我试图实现的目标,我希望数据库中的每个文档都有一个唯一的id字段,并且我希望该唯一id与文档id相同 例如: documents: data: eBgdTRE123 id:'eBgdTRE123' name:'Jhon Doe' job:'Programmer' 我希望我的数据库有这样的结构,现在我有两个想法来实现这一点 1:要使用云功能并让onCreatelistener,每次有新文
documents: data:
eBgdTRE123 id:'eBgdTRE123'
name:'Jhon Doe'
job:'Programmer'
我希望我的数据库有这样的结构,现在我有两个想法来实现这一点
1:要使用云功能并让onCreate
listener,每次有新文档时,抓取文档并设置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
以任何方式未定义
,可能会在应用程序中进一步导致错误
或者如果有其他方法可以实现这一点?有一种更简单的方法可以实现这一点,使用以下方法(这里是JavaScript SDK) 如文件所述: (
doc()
方法)在
指定的路径如果未指定路径,将自动生成
唯一ID将用于返回的DocumentReference
您将在其他客户端SDK中找到类似的方法,对于Android和iOS。Ow,这将创建文档并同时正确设置id?第一行生成一个带有自动生成的唯一id的
DocumentReference
,第二行只设置此文档的字段并使用自动生成的唯一id。因此,这将确保每个文档都是正确的生成的id字段…非常完美,谢谢
var newDocRef = db.collection('collectionname').doc();
newDocRef.set({
name:'Jhon Doe',
job:'Programmer',
id: newDocRef.id
})