如何获取Firestore文档名称并构造指定结构嵌套对象
问题修正方案
你代码的核心问题是声明的存储结构和赋值语法不符合你要的输出要求,修正后的可运行代码如下:
useEffect(() => { const getPlants = async () => { // 初始声明为空对象,匹配你需要的键值对结构 const response = {} const querySnapshot = await firebase .firestore() .collection('plants') .get() querySnapshot.forEach((doc) => { // 直接以文档ID为键、文档内容为值,写入response对象 response[doc.id] = doc.data() }) setPlants(response) } getPlants() }, [])
逻辑说明
- 你想要的最终结果是
{docID: 文档内容}格式的单层对象,所以初始容器不要声明为数组,直接声明为空对象即可 - 你原来写的
[doc.id: doc.data() ]是语法错误,JS中对象字面量使用大括号{},方括号是数组声明语法;同时不需要单独创建小对象再推入数组,直接给总对象追加属性即可 - 如果后续业务需要使用数组格式的数据,可通过
Object.values(plants)或者Object.entries(plants)快速转换。
内容的提问来源于stack exchange,提问作者Santi
相关产品推荐
相关产品推荐

