У меня проблема, спасибо за любую помощь.
С помощью prisma мы можем использовать условия include with 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
}
Модель Nexus
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 (сообщения) - это именно то, что я хочу вернуть !. У каждого сообщения есть массив ОДНОГО комментария. Я возвращаю сообщения, и на интерфейсе у каждого сообщения есть Массив ВСЕХ комментариев, чего я не хочу. Как я могу предотвратить перезапись запросом внешнего интерфейса возвращаемого значения серверного интерфейса? Поля такие же.
Post
иComment
. - person Ryan   schedule 22.09.2020