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

如何从Firestore文档中获取字段名称?

获取Firestore文档字段名称的实操方案

Web/JavaScript 实现

拿到文档快照后,直接用Object.keys()提取顶层字段名:

// 假设docSnap是已获取的文档快照
const docData = docSnap.data();
const fieldNames = Object.keys(docData);
// fieldNames就是所有顶层字段名的数组

如果要提取嵌套字段的完整路径(比如user.name这种层级命名),用递归遍历实现:

function getFullFieldNames(data, parentPath = '') {
  let fields = [];
  for (const key in data) {
    const fullPath = parentPath ? `${parentPath}.${key}` : key;
    if (typeof data[key] === 'object' && data[key] !== null && !Array.isArray(data[key])) {
      fields = [...fields, ...getFullFieldNames(data[key], fullPath)];
    } else {
      fields.push(fullPath);
    }
  }
  return fields;
}

// 调用示例
const allFieldPaths = getFullFieldNames(docSnap.data());

Python 实现

Python SDK中,文档转成字典后直接取keys()即可拿到顶层字段名:

# 假设doc是已获取的文档对象
doc_dict = doc.to_dict()
field_names = list(doc_dict.keys())
# field_names即为所有顶层字段名列表

嵌套字段的完整路径提取可以用递归函数:

def get_full_field_names(data, parent_path=''):
    fields = []
    for key, value in data.items():
        full_path = f"{parent_path}.{key}" if parent_path else key
        if isinstance(value, dict):
            fields.extend(get_full_field_names(value, full_path))
        else:
            fields.append(full_path)
    return fields

# 调用示例
all_field_paths = get_full_field_names(doc.to_dict())

额外提示

  • 即便文档包含Firestore特殊类型(比如时间戳、地理坐标),上述方法也能正常提取字段名——这些特殊类型只会影响字段值的格式,不会干扰键名的获取。
  • 如果要统计集合内所有文档的全部字段名,记得遍历文档后对结果去重,避免重复输出相同字段。

内容的提问来源于stack exchange,提问作者Sri Sahithi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:18:14