Как я могу определить распознаватель для типа объекта в graphql- js? - PullRequest
0 голосов
/ 09 апреля 2020

В моем приложении много типов графиков.

Я использую graphql- js для их построения.

// example
const TruckDriver: GraphQLObjectType = new GraphQLObjectType({
  name: 'TruckDriver',
  fields: () => ({
    id: { type: GraphQLString },
  }),
})

Затем я импортирую такие типы в разные запросы и мутации, чтобы определить тип возвращаемых значений.

Но мои средства распознавания не возвращают объекты, они возвращают экземпляры классов, в которых информация о полях находится во вложенном свойстве 'info'. Например, описанный выше преобразователь вернет

{
   info: {
     id: '123'
   }
   ...
}

Я хотел добавить преобразователь в мои типы, но обнаружил, что типы не имеют преобразователей.

Как я могу легко реализовать логи c из разбор данных полей для моих типов объектов?

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете указать определитель для каждого отдельного поля, например:

const TruckDriver: GraphQLObjectType = new GraphQLObjectType({
  name: 'TruckDriver',
  fields: () => ({
    id: {
      type: GraphQLString
      resolve: truck => truck.info.id
    },
  }),
})

, или изменить преобразователи для полей Query и Mutation, чтобы они возвращали объекты соответствующей формы. Что-то вроде

async function resolve () {
  const trucks = await getTrucks()
  return trucks.map(truck => truck.info)
}
...