Расширение определения фильтра GraphQL - PullRequest
0 голосов
/ 07 ноября 2019

Я расширил свою схему graphql для добавления резолвера итогов, но я не могу расширить фильтр для фильтрации по этому полю. Я не могу понять, что может быть не так, потому что это кажется очень простым, так что, может быть, это не поддерживается? Я использую Postgraphile с makeExtendSchemaPlugin, но я считаю, что вопрос заключается в базовом синтаксисе graphql.

return {
  typeDefs: gql`
    extend type Note {
      lines: Int
    }
    extend type NoteFilter {
      lines: IntFilter
    }
  `,
  resolvers: {
    Note: {
      resolve: async(parent, args, ctx, info) => {
        // logic here
        return parent['@lines'].data.length;
      }
    }
  }
}

Это кажется таким простым. Преобразователь счета работает и показывает, сколько строк в заметке, но я не могу отфильтровать ее. Я не хочу помещать логику фильтра в само свойство линий. Если я определяю новый запрос и назначаю ему NoteFilter, фильтр существует, но не содержит моего расширенного свойства (строк). Кто-нибудь знает, что я делаю не так? Это конечная цель, которую я хотел бы запросить:

gql`
  {
    allNotes(filter: {
      lines: {
        greaterThan: 10
      }
    }) {
      id
      lines
      line {
        content   
      }
    }
  }
`

1 Ответ

0 голосов
/ 07 ноября 2019

Если вы расширяете тип входного объекта, правильный синтаксис:

extend input NoteFilter {
  lines: IntFilter
}

В SDL типы входных объектов обозначаются как input, а не type.

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