соединение реле призмы - PullRequest
0 голосов
/ 30 июня 2019

У меня есть базовый сервер graphql-yoga, который пропускает поле через соединение Prisma Relay.По какой-то причине свойство агрегата говорит, что я не авторизован, хотя все остальные поля работают правильно.Я также могу вызвать агрегат с игровой площадки Prisma.

index.ts

const server = new GraphQLServer({
  schema,
  middlewares: [permissions],
  context: request => {
    return {
      ...request,
      prisma,
    }
  },
})

server.start(() => console.log(`? Server ready at http://localhost:4000`))

permissions / index.ts

import { rule, shield } from 'graphql-shield'
import { getUserId } from '../utils'

const rules = {
  isAuthenticatedUser: rule()((parent, args, context) => {
    const userId = getUserId(context)
    return Boolean(userId)
  }),
  isPostOwner: rule()(async (parent, { id }, context) => {
    const userId = getUserId(context)
    const author = await context.prisma.post({ id }).author()
    return userId === author.id
  }),
}

export const permissions = shield({
  Query: {
    me: rules.isAuthenticatedUser,
    filterPosts: rules.isAuthenticatedUser,
    post: rules.isAuthenticatedUser,
  },
  Mutation: {
    createDraft: rules.isAuthenticatedUser,
    deletePost: rules.isPostOwner,
    publish: rules.isPostOwner,
  },
})

resolvers / Query.ts

export const Query = prismaObjectType({
  name: 'Query',
  t.prismaFields(['postsConnection'])
});

Ошибка: не авторизован!в normalizeOptions (C: \ project \ server \ node_modules \ graphql-shield \ src \ shield.ts: 32: 32)

at Object.shield (C:\project\server\node_modules\graphql-shield\src\shield.ts:51:29)   

at Object.<anonymous> (C:\project\server\src\permissions\index.ts:16:28)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Module._compile (C:\project\server\node_modules\source-map-support\source-map-support.js:521:25)
at Module.m._compile (C:\Users\me\AppData\Local\Temp\ts-node-dev-hook-8773075548230125.js:56:25)
at Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at require.extensions.(anonymous function) (C:\Users\me\AppData\Local\Temp\ts-node-dev-hook-8773075548230125.js:58:14)
at Object.nodeDevHook [as .ts] (C:\project\server\node_modules\ts-node-dev\lib\hook.js:61:7)    at

Module.load (внутренний / modules / cjs / loader.js: 653: 32)

...