flutter 将参数传递给GraphQL

xvw2m8pv  于 2023-03-09  发布在  Flutter
关注(0)|答案(1)|浏览(203)

如何将参数传递给GraphQL?我尝试了下面的代码,但得到错误Undefined name 'tenant_id'.\nTry correcting the name to one that is defined, or defining the name.

Gql查询

mixin GqlQuery {
  static String getTenancyListQuery = '''
  query{
   tenancy($tenant_id: String!) {    // error in this line
    id
    invoices{
      id
      }
    }
  }
  ''';
}

回购协议

@override
  Future<List<TenancyListResponse>?> getTenancyList() async {
    try {
      final result = await _client.query(QueryOptions(
          document: gql(GqlQuery.getTenancyListQuery),
          variables: const {"tenant_id": 9, "page": 1}));

      return result.data?['tenancy']
          .map((e) => TenancyListResponse.fromJson(e))
          .cast<TenancyListResponse>()
          .toList();
    } catch (e) {
      debugPrint("Exception $e");
      rethrow;
    }
  }
deikduxw

deikduxw1#

你需要给你的查询命名并定义更高一层的参数,而且你的查询显然需要一个Int而不是String作为输入对象q的一部分。
取代:

query{
  tenancy($tenant_id: String!) {
    id
    invoices{
      id
    }
  }
}

试试看:

query myQuery($tenant_id: Int!) {
  tenancy(q: {tenant_id: $tenant_id}) { 
    id
    invoices{
      id
    }
  }
}

这看起来似乎有些多余,但它允许您在单个请求中运行多个查询/突变,并将参数正确地路由到每个查询/突变。

相关问题