Orm 如何在prisma中搜索M到N关系?
我现在和普里斯玛一起做这个项目。 我设计了m-to-n关系表。下面是我的代码。 schema.prismaOrm 如何在prisma中搜索M到N关系?,orm,prisma,prisma-graphql,nexus-prisma,prisma2,Orm,Prisma,Prisma Graphql,Nexus Prisma,Prisma2,我现在和普里斯玛一起做这个项目。 我设计了m-to-n关系表。下面是我的代码。 schema.prisma model Artists { id Int @id @default(autoincrement()) artistName String? Albums Albums[] Artists_Tracks Artists_Tracks[] } model Ar
model Artists {
id Int @id @default(autoincrement())
artistName String?
Albums Albums[]
Artists_Tracks Artists_Tracks[]
}
model Artists_Tracks {
id Int @id @default(autoincrement())
trackId Int?
artistId Int?
Artists Artists? @relation(fields: [artistId], references: [id])
Tracks Tracks? @relation(fields: [trackId], references: [id])
@@index([artistId], name: "Artists_Tracks_artistId_foreign_idx")
@@index([trackId], name: "Artists_Tracks_trackId_foreign_idx")
}
model Tracks {
id Int @id @default(autoincrement())
trackName String?
albumTrackNumber Int?
albumId Int?
Albums Albums? @relation(fields: [albumId], references: [id])
Artists_Tracks Artists_Tracks[]
@@index([albumId], name: "Tracks_albumId_foreign_idx")
}
这是我的prisma代码。我想做的是按trackname搜索,并用艺术家的名字获取所有曲目的信息
+(编辑)
我试过的是
// first try
optObj.include = {
Albums: {
select: { cover: true },
},
Artists_Tracks: {
Albums: true
},
};
// second try
optObj.include = {
Albums: {
select: { cover: true },
},
Artists_Tracks: true,
Artists: true,
};
const result = await prisma.tracks.findMany(optObj);
并使用promise.all获得每首曲目的艺术家名称。有没有办法在一次一次的查询中做到这一点?我很肯定会有更好的方法来做到这一点。提前感谢。根据您的模式,
包含
将不包含艺术家
关系。它必须包含在Artists\u Tracks
关系中,如下所示:
const result = await prisma.tracks.findMany({
include: {
Albums: {
select: { cover: true },
},
Artists_Tracks: { include: { Artists: true } },
},
})
通过这种方式,您可以为每首曲目获得
艺术家。我尝试过这种方式,但出现了错误:/所以我想有没有什么特殊的方法可以反向操作。include允许我们从多个连接到一个,但不是从一个连接到多个,不是吗?你犯了什么错误?我按照你说的解决了问题:/这是因为我的一个队友更改了DBschema,没有让我们知道。它工作得很好。非常感谢你。