Firestore文档ID和用户创建的名为ID

问题描述

我正在处理一个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方法,那么您可以破解某些东西。很抱歉无法发布实际的代码解决方案,但希望这会有所帮助。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...