问题描述
我正在处理一个Angular 8项目和firestore集合,其中包含多个文档。每个文档都有一个名为id
的字段。当我使用大括号内插来显示文档的ID(类似于{{data.id}}
时)时,它总是显示自动生成的文档ID,而不是用户在文档中创建的ID字段。正确提取了诸如名称之类的其他文档值(例如{{data.name}}
)。如何获取所需的ID值而不是文档ID?
预先谢谢你。
解决方法
如果您使用的是默认的node.js Firestore SDK,请按以下步骤操作:
const doc = await db.collection('mycollection').doc('XXXXXX').get();
console.log(doc.id) // returns default Firestore document id
console.log(doc.data().id) // returns the value of documents field id
从我对Angularfire2库的了解中,他们对文档进行了包装和转换,这可能是导致文档ID字段被Firestore UUID文档ID覆盖的原因。看来,如果您使用的是valueChanges方法,则元数据将被修剪,并且您应该能够访问id字段。如果您使用的是SnapshotChanges方法,那么您可以破解某些东西。很抱歉无法发布实际的代码解决方案,但希望这会有所帮助。