Невозможно использовать фрагменты с Prisma
У меня та же проблема этой темы. Невозможно использовать фрагменты в GraphQL-йоге с Primsa.
Однако решение не сработало для меня.
Я пытаюсь ограничить доступ пользователей к чужой электронной почте с помощью фрагментов. Если я отправляю идентификатор через запрос, я вижу свою электронную почту, но не вижу других, что ожидается. Однако, если я не отправлю удостоверение личности, я не получу письмо.
Я думаю, что у меня все хорошо настроено или я слишком слеп, чтобы понять, что не так. Кто-нибудь может подсказать мне, что происходит?
Я использую "graphql": "^14.3.1", "graphql-cli": "^3.0.11", "graphql-yoga": "^1.17.4" и prisma 1.34
Мой пользователь распознает это
import getUserId from '../utils/getUserId'
const User = {
email: {
fragment: 'fragment userId on User { id }',
resolve(parent, args, {
request
}, info) {
const userId = getUserId(request, false)
console.log(userId) //here I can see the id of the logged user
console.log(parent.id) // here I see UNDEFINED
if (userId && userId === parent.id) {
return parent.email
}
return null
}
}
}
export {
User as
default
}
Мой сервер.js:
import {
GraphQLServer,
PubSub
} from 'graphql-yoga'
import {
resolvers,
fragmentReplacements
} from './resolvers/index'
import prisma from './prisma'
const pubsub = new PubSub()
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context(request) {
return {
pubsub,
prisma,
request
}
},
fragmentReplacements
})
console.log(fragmentReplacements) //Here I can see that the application is picking up the fragments
export {
server as
default
}
Наконец, мой запрос пользователя:
prisma
}, info) {
const opArgs = {
first: args.first,
skip: args.skip,
after: args.after,
orderBy: args.orderBy
}
if (args.query) {
opArgs.where = {
OR: [{
name_contains: args.query
}]
}
}
return prisma.query.users(opArgs, info)
},```