Как я могу получить «ошибки» из graphql-flutter

#flutter #dart #graphql #flutter-graphql

#флаттер #dart #graphql #flutter-graphql

Вопрос:

Я хочу получить свои отправленные ошибки из data.errors. Я использую «https://github.com/zino-app/graphql-flutter/tree/master/packages/graphql » чтобы получить мой ответ. Мой ответ выглядит так:

 {data: {…}, status: 401, statusText: "OK", headers: {…}, config: {…}, …}
config: {url: "http://localhost:3000/graphql", method: "post", data: "{"query":"n        query getSomeData($date: Str…variables":{"date":"2020-09-18","city":"London"}}", headers: {…}, transformRequest: Array(1), …}
data:
data: {getSomeData: null}
errors: [{…}]
__proto__: Object
headers: {content-length: "88", content-type: "application/json; charset=utf-8"}
original_status: 200
request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
status: 401
statusText: "OK"
__proto__: Object
  

Мой код для получения моих данных выглядит следующим образом:

 import 'dart:async';

import 'package:graphql/client.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

import '../shared/secure_storage.dart' as storage;

final HttpLink _httpLink = HttpLink(
  uri: DotEnv().env['BACKEND_CONNECTION'],
);

final AuthLink _authLink = AuthLink(
  getToken: () async => 'Bearer '   storage.getToken(),
);

final Link _link = _authLink.concat(_httpLink);

final GraphQLClient _client = GraphQLClient(
  cache: InMemoryCache(),
  link: _link,
);

final String query = ''' typical query''';

class PublicConcertsBloc extends ChangeNotifier {
  //Data
  List _resu<
  List get result => _resu<

  //Getters

  QueryOptions get options => QueryOptions(
      documentNode: gql(query), variables: {'var1': var, 'var2': 'var2'});

  set result(List val) {
    _result = val;
    notifyListeners();
  }

  Future loadConcerts() async {
    final QueryResult result = await _client.query(options);

    if (result.data == null) {
      print("data == null");
    } else if (result.data["getSomeData"] == null) {
      print("getSomeData == getSomeData");
    } else if (result.loading) {
      print(result.loading.toString());
    } else if (result.hasException) {
      print(result.exception.toString());
    } else {
      print(result.data['getSomeData']);
      _result = result.data['getSomeData'] as List;
    }
  }
}
  

Может кто-нибудь мне здесь помочь? результат.исключение не показывает мне требуемые ошибки.

Комментарии:

1. Вы пробовали распечатывать result.data ? Вы пытались напрямую запрашивать сервер graphql, чтобы убедиться, что проблема не в сервере?

Ответ №1:

Ошибка указана в HTTP-ответе, который равен 401. Этот код состояния выдается из-за не прошедшего проверку подлинности HTTP-запроса. Причина, по которой QueryResult.exception пуст, заключалась в том, что HTTP-запрос был успешно выполнен.