You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore集合非空但读取返回空文档问题求助

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:07:12