You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:36:23