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

如何正确判断Firestore文档中的字段是否为Map类型?

问题描述

我在Firestore的文档里设置了一个map字段,类型为Map(如图所示):
Firestore文档中的Map字段

我使用以下代码从Firestore读取该文档:

async function getJohn() {
  var ref = doc(db, "users/john");
  const document = await getDoc(ref);
  if(document.exists()) {
    let map = document.data().map
    if (map instanceof Map) {
      alert("Is a Map.")
    } else {
      alert("It's not a Map.")
    }
  }
}

但实际运行后,总是弹出提示:

It's not a Map.

该如何解决这个问题?

解决方法

Firestore的JavaScript SDK读取Map类型字段时,默认会将其转换为普通的JavaScript对象(Object),而非原生Map实例,这就是instanceof Map判断返回false的原因。

你可以通过以下两种方式处理:

  • 手动转换为Map实例:
    利用Object.entries()将读取到的普通对象转为键值对数组,再传入Map构造函数生成Map实例:

    async function getJohn() {
      var ref = doc(db, "users/john");
      const document = await getDoc(ref);
      if(document.exists()) {
        const mapObj = document.data().map;
        const map = new Map(Object.entries(mapObj));
        if (map instanceof Map) {
          alert("Is a Map.");
        } else {
          alert("It's not a Map.");
        }
      }
    }
    
  • 直接操作普通对象:
    如果不需要严格使用Map实例,也可以直接把读取到的对象当作普通JS对象使用,比如通过mapObj.key或mapObj['key']访问属性,遍历则用Object.keys()、Object.values()或Object.entries()方法。

内容的提问来源于stack exchange,提问作者Always Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:05:08