Node.js无法读取Firebase Firestore数据问题排查求助
问题根因
你看到user集合下显示为灰色的文档,是Firestore中的空父级文档(幽灵文档):这类文档本身没有存储任何字段数据,仅作为子集合pasien的路径载体存在。直接调用db.collection('user').get()时,Firestore默认只会返回有实际字段数据的文档,所以你拿到的查询结果size为0,后续遍历逻辑自然不会执行。
你的Flutter端写入功能不受影响,是因为写入操作直接指定了子集合的完整路径(user/[文档id]/pasien/[子文档id]),不管父级文档是否存在实际数据都可以正常写入。
解决方案
- 方案一(推荐):使用集合组查询直接检索所有
pasien子集合数据,跳过查询空父级文档的步骤,代码修改如下:
// 集合组查询会匹配所有名为pasien的子集合 db.collectionGroup('pasien').where('no_rm', '==', noRm).get() .then(snapshot => { snapshot.forEach(pasien => { console.log(pasien.data()); // 若需要获取所属user文档的ID,可通过 pasien.ref.parent.parent.id 拿到 }) })
- 方案二:补全父级文档的字段数据
在Flutter端创建user下的文档时,给文档添加至少一个占位字段(例如createTime、userId等),让文档变为有实际数据的普通文档,控制台会显示为黑色,此时再调用db.collection('user').get()就能正常拿到所有user文档。
内容的提问来源于stack exchange,提问作者Ananda Pramono
相关产品推荐
相关产品推荐

