Аполлон угловой запрос с переменными не удалось разобрать - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть этот сервер API для нумерации учетных записей

 {
  accounts (offset: 2, limit: 1) {
    key
    name
  }
}

Все хорошо работает с использованием Graphiql

{
  "data": {
    "accounts": [
      {
        "key": "fde3d97d-6a44-4c36-bc59-149a3e8e51ac",
        "name": "a0f353611567c83e"
      }
    ]
  }
}

Я следовал документам Apollo, чтобы подключить мой веб-клиент к бэкэнду. Запросы по умолчанию работают, но когда я пытаюсь добавить переменные, я получаю эту ошибку на стороне сервера.

WARN  g.GraphQL - Query failed to validate : 'query Accounts($offset: Int, $limit: Int) {
      accounts(offset: $offset, limit: $limit) {
        key
        name
        __typename
   }
 }

мой угловой код (7) выглядит так:

import { Component, OnInit } from "@angular/core";
import { Apollo, QueryRef } from "apollo-angular";
import { DocumentNode } from "graphql";
import { Observable, Subscription } from "rxjs";
import gql from "graphql-tag";

const ACCOUNTS = gql`
  query Accounts($offset: Int, $limit: Int) {
    accounts(offset: $offset, limit: $limit) {
      key
      name
    }
  }
`;

@Component({
  selector: "app-accounts",
  templateUrl: "./accounts.component.html",
  styleUrls: ["./accounts.component.scss"]
})
export class AccountsComponent implements OnInit {

  private data: Observable<any>;

  constructor(private apollo: Apollo) {}

  ngOnInit() {
    this.data = this.apollo.watchQuery({
      query: ACCOUNTS,
      variables: {
        offset: 0,
        limit: 3
      }
    }).valueChanges;
  }        
}

казалось, что GQL вообще не анализируется, когда вводятся параметры (переменные).

Есть предложения?

EDIT

после перехода на новый генератор кода Apollo у меня есть все типы, извлеченные с сервера, и все типы, сгенерированные для меня.

Тем не менее, я не знаю, почему запрос не работает с переменными.

import { Component, OnInit } from "@angular/core";
import { Observable } from "rxjs";
import { map } from "rxjs/operators";

import { AccountsGQL, Account } from "../generated/graphql";

@Component({
  selector: "app-accounts",
  templateUrl: "./accounts.component.html",
  styleUrls: ["./accounts.component.scss"]
})
export class AccountsComponent implements OnInit {
  private data: Observable<Account[]>;

  constructor(private accountsGQL: AccountsGQL) {}

  ngOnInit() {
    this.data = this.accountsGQL
      .watch({ offset: 0, limit: 1 })
      .valueChanges.pipe(map(result => result.data.accounts));
  }
}

'offset' привел нулевое значение для ненулевого типа 'Int!'

...