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

如何将Firestore查询获取的数据转换为JSON对象用于后续数据筛选?

解决方案

doc.data() 本身返回的就是标准纯JavaScript对象,完全可以直接用来做筛选、遍历等操作,不需要额外转换。如果你需要序列化后的JSON字符串用于存储、传参等场景,直接调用JSON.stringify()处理即可。

你可以参考如下修改后的代码,把获取到的数据存入state方便后续操作:

import { useState, useEffect } from 'react';

const App = () => {
  // 初始化空数组存储多条查询结果
  const [users, setUsers] = useState([]);

  const getData = async () => {
    const citiesRef = firestore.collection("users");
    const snapshot = await citiesRef
      .where("item.itemName", "==", true)
      .where("item", "==", false)
      .get();
    if (snapshot.empty) {
      console.log("No matching documents.");
      return;
    }

    // 把所有文档数据整理为带文档id的数组,存入state
    const userList = snapshot.docs.map(doc => {
      // 附带文档id方便后续更新、删除等操作
      return { id: doc.id, ...doc.data() }
    });
    setUsers(userList);
    
    // 如需JSON字符串,直接序列化即可
    const userJsonStr = JSON.stringify(userList);
    console.log('序列化后的JSON字符串:', userJsonStr);
    // 后续需要转回对象的话调用 JSON.parse(userJsonStr) 即可
  };

  useEffect(() => {
    getData();
  }, []); // 增加空依赖数组,避免重复触发请求

  // 示例:直接使用users数组做筛选操作,无需转JSON
  const filteredUsers = users.filter(user => user.age > 20);

  return <div>Month</div>;
};

export default App;

补充说明

如果只是要在代码里做筛选、计算等逻辑,不需要转JSON字符串,直接操作doc.data()返回的JS对象或者处理后的users数组即可,转JSON字符串一般仅用于本地存储、后端传参等需要序列化的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:18:03