Angular从MongoDB获取日志数据返回undefined问题求助
问题解决:工时日志返回undefined的原因与修复
问题根源
从你的补充信息来看,console.log(workhour)能正常打印出所有日志条目,说明后端返回的响应本身就是日志数组,而非嵌套在log属性中的对象。之前代码里尝试访问workhour.log,但workhour是数组类型,不存在log属性,所以返回undefined。
修复步骤
修改dashboard.component.ts中的getLogs方法,直接将返回的workhour赋值给this.log即可:
getLogs(username) { console.log(username + " in getLogs()"); this.authService.getLog(username).subscribe(workhour => { // 直接赋值,不再访问.log属性 this.log = workhour; console.log(workhour); // 现在能看到正确的日志数组 }, err => { console.log(err); return false; }); }
额外验证建议
打开浏览器开发者工具的Network标签,查看/logs/get/{username}请求的响应体,确认返回数据的结构:
- 如果返回的是
[{id:1, hours:8, ...}, {...}]这种数组,上述修复完全适用; - 如果返回的是类似
{data: [...], message: "success"}的对象,则需要改为this.log = workhour.data(对应后端实际的字段名)。
可选优化
为了代码更健壮,可以添加类型定义:
// 定义日志条目类型 interface WorkHourLog { id?: number; username: string; hours: number; // 其他字段根据你的数据库结构补充 } // 在组件中声明log类型 log: WorkHourLog[] = [];
内容的提问来源于stack exchange,提问作者lamhonn
相关产品推荐
相关产品推荐

