【发布时间】:2020-12-23 16:57:26
【问题描述】:
我将我的应用程序与 graphql 连接,查询工作正常,我能够从 API 获取数据,但不知何故,突变根本不起作用。我的 mytation 是一个简单的登录功能,您可以在其中输入现有用户的登录名和密码。每次我运行它时,onCompleted 返回空值,而不是带有令牌的 JSON。后来我检查了突变是否将任何东西传递给数据库,但没有。有办法解决吗?
我的代码:
final String loginQuery = """
mutation loginUser(\$email: String!, \$password: String!){
login(email: \$email, password: \$password){}
}
""";
登录小部件:按下按钮后,文本小部件应显示突变结果。
Widget mutation() {
return Mutation(
options: MutationOptions(
update: (Cache cache, QueryResult result) {
return cache;
},
onCompleted: (resultData) {
print('on completed $resultData');
},
documentNode: gql(loginQuery),
),
builder: (RunMutation runMutation, QueryResult result) {
return Column(
children: <Widget>[
RaisedButton(
child: Text('login'),
onPressed: () {
runMutation(
{"email": "mockuser@gmail.com", "password": "123456"});
print(result.data);
}),
Container(
color: Colors.white,
child: Text('Result \n ${result?.data?.toString()}'))
],
);
});
}
【问题讨论】:
-
api 突变单独测试?邮递员能用吗?
-
是的,邮递员工作得很好
-
将原始网络请求详细信息与邮递员进行比较
-
调试后我注意到它返回 422 错误,然后是 GraphQL Error: "expected at least one definition, found }: Undefined location";知道是什么原因造成的吗?
-
它在邮递员中工作?对于完全相同的查询? ...没有请求子字段...突变def?返回类型?如果不是简单类型,则应请求其某些属性....
mutation ...login( .. vars ) { HERE }