Node.js 将文档id作为字段id包含在firestore中

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,每次有新文

这就是我试图实现的目标,我希望数据库中的每个文档都有一个唯一的id字段,并且我希望该唯一id与文档id相同

例如:

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
          })