Firestore中console.log字典正常,通过Key访问却返回undefined
问题分析与解决建议
1. 检查键名的精确匹配
控制台打印的对象可能存在键名大小写不一致、首尾空格或特殊字符的情况,比如实际键是jimmy、 Jimmy(带前空格)而非Jimmy。可以通过以下代码打印所有键名,确认精确拼写:
console.log(Object.keys(employeeWorkload));
对比输出的键名和你使用的"Jimmy"是否完全一致,包括大小写、空格等细节。
2. 转换为纯JavaScript对象
Firestore返回的data()结果可能是带有特殊原型的对象(如DocumentData),即使console.log显示正常,直接访问键可能存在异常。可以尝试将其转换为纯对象后再访问:
const employeeWorkload = {...projectData.workload}; // 或者 const employeeWorkload = Object.assign({}, projectData.workload);
之后再尝试console.log(employeeWorkload["Jimmy"])。
3. 确认数据加载完整性
虽然你已经使用await获取文档,但可以额外确认projectDoc是否存在且workload字段有效:
async addTask() { const projectDoc = await getDoc(doc(db, "projects", "TestingNewNew")); if (!projectDoc.exists()) { console.log("文档不存在"); return; } const projectData = projectDoc.data(); if (!projectData?.workload) { console.log("workload字段不存在"); return; } const employeeWorkload = {...projectData.workload}; console.log(Object.keys(employeeWorkload)); console.log(employeeWorkload["Jimmy"]); }
这能排除文档不存在或workload字段缺失的情况。
内容的提问来源于stack exchange,提问作者Elson
相关产品推荐
相关产品推荐

