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

如何修改Prisma查询的返回类型,移除嵌套层级?

修改Prisma查询以直接返回视频对象结构

你当前的查询是从academy_user_like_videos表拉取关联的视频数据,所以返回结果会嵌套在academy_videos字段里。要得到你期望的扁平结构,有两种简单可行的方法:

方法一:查询后处理结果(最直接的修改方式)

执行完原查询后,用数组map方法提取每个项里的academy_videos对象:

const likedVideos = await prisma.academy_user_like_videos
  .findMany({
    where: {
      user_id: 2587,
    },
    orderBy: {
      created_ts: "desc",
    },
    select: {
      academy_videos: true,
    }
  })
  .then(results => results.map(item => item.academy_videos));

这样likedVideos就是你想要的视频对象数组;如果只需要最新的那一条视频,直接取results[0]?.academy_videos即可。

方法二:反向查询academy_videos表(更贴合需求的写法)

既然目标是获取用户喜欢的视频,直接从academy_videos表出发,通过关联的academy_user_like_videos筛选目标用户,返回结果就是直接的视频对象:

const likedVideos = await prisma.academy_videos.findMany({
  where: {
    academy_user_like_videos: {
      some: {
        user_id: 2587
      }
    }
  },
  orderBy: {
    academy_user_like_videos: {
      created_ts: "desc"
    }
  }
});

这种写法不需要额外的结果处理,直接得到符合结构的视频数组。如果只需要单个最新视频,把findMany换成findFirst就行:

const latestLikedVideo = await prisma.academy_videos.findFirst({
  where: {
    academy_user_like_videos: {
      some: {
        user_id: 2587
      }
    }
  },
  orderBy: {
    academy_user_like_videos: {
      created_ts: "desc"
    }
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:34