javascript - 为什么我的 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。请问有什么建议吗?
解决方案
您正在创建并返回一个数组。但是您将其设置为 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);
推荐阅读
- html - 无法在数字周围加宽 CSS 圆圈/椭圆
- r - 如何总结 r 中 2 seq 日期之间的信息?
- python - 使用python突出显示word文档中的某些单词
- r - 在不通过引用更新的表达式中引用 R data.table 中的列
- ruby - 如何在没有 gemspec 的情况下使用 Gemfile 将“lib”添加到 LOAD_PATH?
- javascript - 在运行转换 3D 动画时使用 SVG 背景而不是内联 SVG 会影响性能吗?
- groovy - 如何将值发送到 Groovy 函数中的最后一个默认参数?
- mysql - docker update 后,Mysql 未在 MacOS 上的 docker 容器中启动
- vba - 如何设置宏来打开我的 Visual Basic 用户表单?
- python - 使用 Django 使用 HTML 渲染 CSS