如何从 graphql-flutter 获得"errors"



我想从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 _result;
List get result => _result;
//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;
}
}
}

有人能帮我吗?结果。exception没有显示我想要的错误。

错误是在HTTP响应上提供的,即401。此状态代码是由于未经身份验证的HTTP请求而引发的。QueryResult.exception为空的原因是HTTP请求已成功执行。

最新更新