Почему мой запрос не возвращает массив перечислений - PullRequest
0 голосов
/ 03 июля 2019

У меня возникли проблемы с запросом массива Enums в запросе GraphQL. Я ожидаю, что массив или разрешения будут возвращены пользователю в соответствии с типом

Странно, когда я делаю один и тот же запрос на игровой площадке (для серверов Prisma или Apollo-Server), я возвращаю массив.

Мой запрос выглядит так:

const user = await ctx.db.query.user({
  where: {
    id: ctx.userId
  }
});

Мое определение типа выглядит так:

type User {
    id: ID! @id
    name: String!
    email: String! @unique
    password: String!
    club: String!
    permissions: [Permission!]! @scalarList(strategy: RELATION)
    createdAt: DateTime! @createdAt
    updatedAt: DateTime! @updatedAt
}

разрешения выглядят как

enum Permission {
    ADMIN
    CLUB_ADMIN
    USER
    FRIEND
}

Я не включил свой преобразователь запросов, так как я только что перенаправил его в БД, используя «forward-to»

Но CL пользователя -

{ id: 'cjxm9ohfqvkvh0b5963iy734i',
  name: 'BERTIE BOBBINS',
  email: 'BERTIE@DOGS.COM',
  password: '$2b$10$eLPoBuuenogLabiFb4tRFu0KV7LI4LxARhHecPYVbP0qnt5VvcZ3W',
  club: 'Dog Club',
  createdAt: '2019-07-02T20:30:49.670Z',
  updatedAt: '2019-07-02T20:30:49.670Z' }

То есть, не включая массив Permissions.

1 Ответ

0 голосов
/ 03 июля 2019

Самоанализ Система этого типа самоанализа

  1. __ Схема
  2. __ Тип
  3. __ TypeKind
  4. __ Поле
  5. __ InputValue
  6. __ EnumValue
  7. __ Директива

Для запроса перечислений вам необходимо использовать средство разрешения запросов __Type.

enum Permission {
    ADMIN
    CLUB_ADMIN
    USER
    FRIEND
}

запрос для перечисления

query 
{
 __type(name: "Permission") {
   name
   enumValues {
     name
   }
 }
}

Для распознавателя запросов __type требуется параметр name.Этот параметр позволяет вам искать в вашей схеме элементы, такие как объекты и перечисления, основываясь на их имени.

{
 "data": {
   "__type": {
   "name": "Permission", 
   "enumValues" : [
     {
       name: "ADMIN" 
     },
     { 
       name: "CLUB_ADMIN" 
     },
     { 
       name: "USER" 
     },
     { 
       name: "FRIEND"
     }
   ]
  }
 }
}

Возвращает имя перечисления со всеми его значениями.Чтобы использовать эти значения, сохраняйте их в переменной при запросе перечислений.

PermissionsList = data.__type.enumValues

Если вам нужно перечислить внутри объекта пользователя ref this

Если вы используете сервер apolloзатем прочитайте apollo-server и graphql-tools

...