Тип ввода GraphQL как параметр запроса - PullRequest
0 голосов
/ 19 октября 2018

Я использую Apollo Angular и размещаю сервер на базе GraphQL.Просьба, которую я пытаюсь достичь, проста.Мне нужно передать объект в качестве параметра запроса моего запроса.Это мой запрос:

return this.apollo
    .watchQuery({
        query: this.ListQuery,
        variables: {
            boundaries: {
                east: boundaries.east,
                west: boundaries.west,
                north: boundaries.north,
                south: boundaries.south,
            }
        },
        fetchPolicy: 'no-cache',
    })
    .valueChanges.pipe(
        map(({data}: any) => data.spots ? data.spots.map((spot) => new Spot(spot)) : [])
    );

Запрос определяется как:

query SpotList($boundaries: Boundaries) {
      spots (boundaries: $boundaries) {
          ...

Моя схема на сервере определяется как:

type Query {
    spot(id: String!): Spot
    spots(boundaries: Boundaries): [Spot!]! 
}

input Boundaries {
    east: Float
    north: Float
    south: Float
    west: Float
}

И когда мойФункция резольвера

@Query()
    async spots(boundaries) {
      console.log(boundaries) //return undefined

Мне интересно, разрешен ли ввод в качестве параметра в запросе, а если нет, какую схему или методику следует использовать.

Если возможно, я не хочу, чтобы мои query имели каждый аргумент явно в коде.

Спасибо!

Редактировать: Решено, поведение вФункция распознавателя из декоратора Nest Query, имеющего шаблон (объект, аргументы, контекст, информация) для своей функции распознавателя.

1 Ответ

0 голосов
/ 19 октября 2018

Как я забыл упомянуть в своем вопросе, я использую Nest на стороне сервера, а декоратор @Query, представленный @ nestjs / graphql, дает специальную подпись функциям распознавателя.

...