如何在PostgreSQL中分组左连接,仅返回关联数据数组?
如何用Drizzle获取仅包含projectPdfs数据的数组
方法一:直接查询关联表(最优解)
你不需要从projects表做左连接,直接从projectPdfs表发起查询,关联projects表过滤指定slug的项目即可,返回结果本身就是纯PDF数据,完全匹配你要的格式:
const pdfs = await db .select() .from(projectPdfs) .innerJoin(projects, eq(projectPdfs.projectId, projects.id)) .where(eq(projects.slug, slug));
方法二:处理现有查询的返回结果
如果必须保留原左连接查询逻辑,可以在拿到数据后用map提取每个项里的pdfs字段:
const data = await db .select() .from(projects) .where(eq(projects.slug, slug)) .leftJoin(projectPdfs, eq(projects.id, projectPdfs.projectId)); // 提取目标PDF数组 const pdfs = data.map(item => item.pdfs);
关于groupBy的说明
你之前尝试的groupBy不适合这个场景,它是用来做数据聚合(比如统计数量、分组拼接)的,而你的需求是获取关联表的每条原始记录,并非聚合数据,所以用groupBy达不到预期效果。
内容的提问来源于stack exchange,提问作者Karl Taylor
相关产品推荐
相关产品推荐

