首页 > 解决方案 > 为什么我的 object.item 总是返回 undefined?

问题描述

const getConfigs = () => {
    let temp_config = [];
    const mydb = fire.firestore().collection("User_Config");
    mydb.onSnapshot((item) => {
      item.forEach((rec) => {
        if (String(rec.id).trim() === String(currentUser.uid).trim()) {
          fire
            .firestore()
            .collection("User_Config")
            .doc(currentUser.uid)
            .onSnapshot((col) => {
              temp_config.push({
                Income_Base: col.data().Income_Base,
                Tax_Calculator: col.data().Tax_Calculator,
                Tax_Enabled: col.data().Tax_Enabled,
                Tax_Rate: col.data().Tax_Rate,
                Simple_Mode: col.data().Simple_Mode,
                Dark_Mode: col.data().Dark_Mode,
              });
            });
        } else {
          console.log("This user does not have any preferences set");
        }
      });
    });
    return temp_config;
  };
useEffect(async () => {
    await getIncome();
    let configurations = {};
    configurations = await getConfigs();
    console.log(configurations.Dark_Mode);
  }, []);

因此,当我 console.log(configurations) 时,它返回以下内容......

在此处输入图像描述

只要我 console.log(configurations.Dark_Mode),它就会返回 undefined。请问有什么建议吗?

标签: javascriptreactjsfirebasegoogle-cloud-firestore

解决方案


您正在创建并返回一个数组。但是您将其设置为 JSON 对象。

虽然这并不理想,但 JavaScript 会解决它(你应该解决这个问题 - 目前这不是你的问题)。因此,让我们只分解最简单的组件。在下面的示例中,您可以看到我们必须像数组一样引用结果集。

const getConfigs = () => {
  let temp_config = []; //Empty Arary

  temp_config.push({
    Income_Base: "1",
    Tax_Calculator: "2",
    Tax_Enabled: "3",
    Tax_Rate: "4",
    Simple_Mode: "5",
    Dark_Mode: "THIS IS THE THING STORED",
  })

  return temp_config;
};



let configurations = {}; //Empty JSON
configurations = getConfigs();
console.log(configurations[0].Dark_Mode);


推荐阅读