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

使用Prisma时JS提示对象未定义,但console.log父对象正常显示

问题解决:Prisma查询后访问嵌套对象报错

你的问题出在查询结果的结构理解错误:
你通过prisma.projectMembers.findMany查询时,select配置只指定返回project字段,所以userProjects数组里的每个元素结构是{ project: { id, title, user: {...} } }——也就是说,你要的项目数据被包裹在一层project属性里,而非直接挂载在顶层。

而你的map函数里直接访问project.id、project.user,自然会提示“未定义”,因为这些属性都在project.project路径下。

修改后的代码

const userProjects = await prisma.projectMembers.findMany({
  where: {
    userId: token._id
  },
  select: {
    project: {
      select: {
        id: true,
        title: true,
        user: {
          select: {
            id: true,
            name: true,
          },
        },
      },
    },
  },
});

const formattedProjects = userProjects.map(item => {
  // 先取出嵌套的项目对象
  const project = item.project;
  console.log(project);
  console.log(project.user);
  return {
    id: project.id,
    title: project.title,
    user: project.user.id,
  };
});

补充说明

你控制台打印的project其实是外层的{ project: {...} }对象,展开后能看到内层的项目数据,但直接访问顶层属性时自然找不到。只要调整访问路径,就能解决“对象未定义”的报错。

内容的提问来源于stack exchange,提问作者AwiJol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:54:22