如何获取Firestore数据库中Map对象的长度?
解决Firestore文档中数组/Map的长度获取问题
针对你遇到的Firestore文档里空集合为数组、有数据时为Map的情况,可通过以下方式获取长度:
获取Map类型的长度:直接用
Object.keys()提取Map的所有键名,再取数组长度,示例代码:// 获取Cars这个Map的长度 const carsLength = Object.keys(vehicles.Cars).length; console.log(carsLength); // 输出3通用兼容方法(同时适配数组和Map):如果需要统一处理两种类型,可写一个工具函数自动判断:
function getLength(collection) { // 先判断是否为数组 if (Array.isArray(collection)) { return collection.length; } // 判断是否为非空对象(即Firestore的Map) if (typeof collection === 'object' && collection !== null) { return Object.keys(collection).length; } // 处理字段不存在或其他异常情况 return 0; } // 使用示例 console.log(getLength(vehicles.Motorcycles)); // 空数组时输出0 console.log(getLength(vehicles.Cars)); // Map时输出3
原理说明:Firestore的Map在JS中对应普通对象,Object.keys()会返回对象所有可枚举键名的数组,其长度就是Map中包含的对象数量;而数组直接使用原生的length属性即可。
内容的提问来源于stack exchange,提问作者Mintee
相关产品推荐
相关产品推荐

