Firestore集合非空但读取返回空文档问题求助
Firestore文档存在但读取返回空数据的问题
我有一个Firestore集合,结构如下:
我能成功向该集合写入数据,但读取时返回空文档。使用的读取代码如下:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore'); const account = require("cert.json"); initializeApp({ credential: cert(account) }); const db = getFirestore(); const docRef = db.collection('users').doc('uuid-string'); const doc = await docRef.get(); console.log('doc: ', doc); // 返回空内容 if (doc.exists) { console.log('Data: ', doc.data()); }
代码执行输出:
$ node app.js doc: Data:
doc.exists为true,会进入if分支,但doc.data()返回空。我已设置完全开放的读写规则:
match /{document=**} { allow read, write: if true; }
我已查阅官方文档及类似问题,但现有方案无法解决我的问题,寻求帮助。
排查与解决方案
- 核对文档ID:确认代码中
'uuid-string'与Firestore控制台中的文档ID完全一致,注意大小写、特殊字符或空格差异。 - 检查文档实际内容:在Firestore控制台打开该文档,确认是否真的存在字段数据(可能写入时仅创建了空文档,未正确保存字段)。
- 验证Admin SDK项目关联:确认
cert.json对应的是当前操作的Firestore项目,避免误操作到其他项目数据库。 - 添加错误捕获:在代码中加入try-catch块,排查隐藏的读取错误:
try { const doc = await docRef.get(); console.log('doc: ', doc); if (doc.exists) { console.log('Data: ', doc.data()); } } catch (error) { console.error('读取文档错误:', error); } - 检查特殊类型字段:如果文档包含Timestamp、Geopoint等特殊类型,直接
console.log可能无法显示,可尝试逐个打印字段:if (doc.exists) { const data = doc.data(); Object.keys(data).forEach(key => { console.log(`${key}:`, data[key]); }); }
内容的提问来源于stack exchange,提问作者User7723337
相关产品推荐
相关产品推荐

