Firestore,使用快照获取文档ID

Firestore, get the document ID using snapshot

我正在尝试从 firestore 获取收集数据,并将该数据保存为 JSON 格式,现在我可以同时执行这两项操作,每次有更改我的列表都会更新,问题是它没有显示 ID 字段,因此所有发生更改的集合都在没有任何文档 ID 的情况下保存。我尝试了附件 post 中建议的一些解决方案,但它根本不起作用。 任何可以帮助我的建议或想法。

const fs =require('fs');
const db = admin.firestore();
var Notebook = db.collection('Notebook').where('itemCFE', '==', '1')
.onSnapshot(querySnapshot => {
  querySnapshot.docChanges().forEach(change => {
    if (change.type === 'modified'){
       console.log('update done',JSON.stringify(change.doc.data()));
       let data =JSON.stringify(change.doc.data());
       fs.writeFileSync('test.json', data, (err) => {
       if (err) throw err;
       console.log('Data Written to file');
       })
     }
   if (change.type === 'removed'){
      console.log('update done',change.doc.data());
   }
 });
});

如果我理解正确的话,除了通过DocumentChange获取文档的数据外,还需要通过change.doc.data()获取文档ID。

你需要做 change.doc.id,因为 doc property of a DocumentChange returns a QueryDocumentSnapshot

文件总是一个 ID。在 forEach 循环中,每个 change 都是一个 DocumentChange 对象。您可以使用 change.doc.id.

获取文档的 ID