使用 Prisma.js 按标签 ID 获取帖子

get posts by tag Id using Prisma.js

如何通过筛选获得帖子 tagId

我测试了这段代码,但它不起作用: 我得到了所有没有过滤的帖子!

prisma.post.findMany({
      include:
      {
        Tags:
        {
          where: { TagId: tagId  },
          include:
          {
            Tag: true
          }
        }
      },
    })

schema.prisma:

model Post {
  id    Int        @id @default(autoincrement())
  title String
  tags  PostTags[]
}

model PostTags {
  id     Int   @id @default(autoincrement())
  post   Post? @relation(fields: [postId], references: [id])
  tag    Tag?  @relation(fields: [tagId], references: [id])
  postId Int?
  tagId  Int?
}

model Tag {
  id    Int        @id @default(autoincrement())
  name  String     @unique
  posts PostTags[]
}

我该如何解决这个问题?

您需要在主查询中而不是在 include 中过滤它。 include只是为了获取关系然后在里面过滤,不会影响主查询。

您的最终查询如下所示:

await prisma.post.findMany({ 
  where: { tags: { some: { tag: { id: 1 } } } } 
})

您可以阅读有关查询关系的更多信息here