我有一个问题,谢谢任何帮助。
使用 prisma,我们可以将 include 与 where 条件一起用于具有关系的模型。如果我制定包含条件,我会得到正确的结果。如果我将它返回到前端,它会被覆盖。我想从后端返回准确的结果。
我在前端有一个查询(ApolloClient,gql)之类的。它将为每个帖子返回一组评论,我只想为每个帖子提供第一个评论。
const POSTS = gql`
query posts {
posts(postId: $postId) {
id
comments{ // at the backend I have conditions for the comments
id
}
}
}
`;
后端: Primsa 和 graphql nexus
棱镜模式
model Post {
id String @id @default(cuid())
comments Comment[]
}
model Comment {
id String @id @default(cuid())
post Post @relation(fields: [postId], references: [id])
postId String
}
连结模型
const Post = objectType({
name: 'Post',
definition(t) {
t.model.id()
t.model.comments()
})
const Comment = objectType({
name: 'Comment',
definition(t) {
t.model.id()
t.model.post()
t.model.postId()
})
解析器
export const posts = queryField('posts', {
type: 'Post',
list: true,
args: {
...
},
resolve: async (_parent, args: any, { prisma, request }, info) => {
const posts = await prisma.post.findMany({
include: {
comments: {
take: 1
}
}
})
console.log(posts)
//Perfect result I want to return the include condition. But at the frontend I have all
//comments
return posts
},
})
console.log(posts) 正是我想要返回的内容!。每个帖子都有一个评论数组。我返回帖子,在前端每个帖子都有一个 ALL 评论数组,这是我不想要的。如何防止前端查询覆盖后端返回?字段是一样的。