从 Firestore 得到无一例外的响应

问题描述

这些时候我正在学习如何使用 Firebase 并做出反应 现在,我创建了一个用户”集合并向其添加一个名为“one”的测试文档,如下所示。 但是,当我尝试获取此文档时,我得到了许多可能与该文档无关的数据。

在这里创建文档并从中获取数据

import { createContext } from "react";
import { db } from "../firebase";

const DbContext = createContext();

export const useDb = () => {
  return useContext(DbContext);
};

export const DbProvider = ({ children }) => {

  //creating "one" doc 
  const uploadToDb = (
    email,photo,userName,gender,age,phone,country,city
  ) => {
    return db.collection("users").doc("one").set({
      photo,city,});
  };

  //get data from doc
  const getFromDb = (email) => {
    var dbRef = db.collection("users").doc("one");

    return dbRef.get();
  };

  const value = { uploadToDb,getFromDb };

  return <DbContext.Provider value={value}>{children}</DbContext.Provider>;
};

在这里我试图获取并打印我得到的数据

  useEffect(() => {
    const getDetails = async () => {
      try {
        const res = await getFromDb(currentUser.email);
        console.log("res",res);
      } catch (error) {
        console.error(error);
      }
    };
    getDetails();
  },[]);

控制台显示

enter image description here

“DB”是我从 firebase.js 文件导出的 firebase/firestore 的名称

解决方法

您的 getFromDb 方法返回您正在打印的文档快照。如果要获取该对象内的数据,则需要按照@AmitTiwary 所述进行打印:

使用res.data()res中的console.log("res "+res.data());获取数据

根据 DocumentSnapshot

应该返回一个 json 对象