如何在Prisma中为查询结果集中的列设置别名?
在Prisma中为查询结果字段设置别名的方法
下面几种方法可以快速实现字段别名的设置:
1. 基础字段别名(select语法)
这是最常用的方式,直接在select对象里用别名作为键,值映射到原字段:
// 假设User模型有name、id字段,将name别名设为userName const users = await prisma.user.findMany({ select: { userName: { name: true }, // 别名userName对应原字段name id: true } });
返回的结果里,每个用户对象会包含userName和id字段。
2. 关联字段的别名
如果要给关联关系设置别名,直接在select里替换关联字段的名称即可:
// 假设User模型有posts关联,将其别名设为userPosts const users = await prisma.user.findMany({ select: { id: true, userPosts: { // 别名userPosts对应原关联posts select: { title: true } } } });
3. 原生SQL查询(复杂场景)
如果需要更复杂的别名(比如聚合函数结果),可以用Prisma的原生查询:
const userStats = await prisma.$queryRaw` SELECT u.name AS userName, COUNT(p.id) AS totalPosts FROM User u LEFT JOIN Post p ON u.id = p.authorId GROUP BY u.id `;
这里直接用SQL的AS关键字定义别名,适合需要自定义SQL的场景。
4. 聚合查询的别名
对聚合结果设置别名时,同样在select里映射:
const userPostCounts = await prisma.user.findMany({ select: { name: true, totalPosts: { // 别名totalPosts对应posts的数量 _count: { posts: true } } } });
内容的提问来源于stack exchange,提问作者Bravo
相关产品推荐
相关产品推荐

