【问题标题】:GraphQL Query to return non-iterableGraphQL 查询返回不可迭代
【发布时间】:2022-01-27 07:09:34
【问题描述】:

我在 python 中使用strawberry-graphql,并且有一个返回User列表的查询

@strawberry.type
class User:
    email: str
    name: str

def get_user():
    items = get_from_database()
    return items

@strawberry.type
class Query:
    all_user: List[User] = strawberry.field(resolver=get_user)

schema = strawberry.Schema(Query)

它工作正常,但我想要一些额外的属性,比如total_item:

def get_user():
    items = get_from_database()
    return {
        'items': items
        'total_item': len(items)
    }

在上面的代码中,Strawberry 将 dict 转换为字符串,所以它不起作用。我尝试创建模式:

@strawberry.type
class User:
    email: str
    name: str

@strawberry.type
class GetUserResult:
    items: List[User]
    item_count: int

def get_user():
    items = get_from_database()
    return GetUserResult(
        items = items
        item_count = len(items)
    )

但它说查询必须返回一个可迭代的 (Expected Iterable, but did not find one for field 'Query.allUser'.)。

有什么办法吗?

【问题讨论】:

    标签: python graphql strawberry-graphql


    【解决方案1】:

    这里是固定的例子:

    from typing import List
    import strawberry
    
    @strawberry.type
    class User:
        email: str
        name: str
    
    def get_user():
        items = [User(email="email", name="Pat")]
        return GetUserResult(
            items=items,
            item_count=len(items)
        )
    
    @strawberry.type
    class User:
        email: str
        name: str
    
    @strawberry.type
    class GetUserResult:
        items: List[User]
        item_count: int
    
    @strawberry.type
    class Query:
        all_user: GetUserResult = strawberry.field(resolver=get_user)
    
    schema = strawberry.Schema(Query)
    

    你可以test here too

    问题是在您定义的第二个 sn-p 中:

    def get_user():
        items = get_from_database()
        return GetUserResult(
            items = items
            item_count = len(items)
        )
    

    但查询仍然需要用户列表

    @strawberry.type
    class Query:
        all_user: List[User] = strawberry.field(resolver=get_user)
    
    

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 2020-01-07
      • 2019-05-28
      • 2015-07-23
      • 2020-01-15
      • 2021-01-15
      • 2018-10-08
      • 2020-11-02
      相关资源
      最近更新 更多