Вернуть объект графов на GraphQL - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь создать запрос GraphQL, который собирает несколько счетчиков в проекте React, но я не могу определить точный тип, который я должен ввести.

Код:

    import {   GraphQLInt,   GraphQLNonNull } from 'graphql' import * as moment from 'moment' import orm from '../../orm' import authDecorator from '../helpers/auth-decorator'

interface IQueryMissionCountArgs {   authToken: string }

export default authDecorator({   requireAdmin: true,   requireAuth: true })({   type: Object(new GraphQLNonNull(GraphQLInt)),   async resolve (
      args: IQueryMissionCountArgs   ) {
    const lastWeekAcceptedMissionsCount = await orm.models.Mission.count({
      where: {
        createdAt: {
          $between: [moment().subtract(7, 'days').toDate(), new Date()]
        },
        status: 'accepted'
      }
    })
    const lastWeekPostedMissionsCount = await orm.models.Mission.count({
      where: {
        createdAt: {
          $between: [moment().subtract(7, 'days').toDate(), new Date()]
        }
      }
    })
    return {
      lastWeekPostedMissions: lastWeekPostedMissionsCount,
      lastWeekAcceptedMissions: lastWeekAcceptedMissionsCount,
    }   } })

Это возвращает эту ошибку:

Int не может представлять не 32-битное целое число со знаком: [объект Object] \ n

1 Ответ

0 голосов
/ 10 мая 2018

Тип, который вы определили для поля, является целым числом:

type: Object(new GraphQLNonNull(GraphQLInt))

но вы возвращаете Объект с двумя свойствами (lastWeekPostedMissions и lastWeekAcceptedMissions).

Вам нужно определить новый GraphQLObjectType, что-то вроде этого:

const WeeklyMissionSummary = new GraphQLObjectType ({ имя: 'WeeklyMissionSummary', поля: { lastWeekPostedMissions: {тип: новый GraphQLNonNull (GraphQLInt)}, lastWeekAcceptedMissions: {тип: новый GraphQLNonNull (GraphQLInt)}, }, })

Затем вы можете использовать это как тип для вашего поля:

type: new GraphQLNonNull(WeeklyMissionSummary)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...