首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回不可迭代的GraphQL查询

返回不可迭代的GraphQL查询
EN

Stack Overflow用户
提问于 2022-01-25 02:48:28
回答 1查看 303关注 0票数 1

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

代码语言:javascript
复制
@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

代码语言:javascript
复制
def get_user():
    items = get_from_database()
    return {
        'items': items
        'total_item': len(items)
    }

在上面的代码中,Strawberry将数据转换为字符串,因此无法工作。我试图创建模式:

代码语言:javascript
复制
@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'.)。

有办法绕过吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-26 23:09:34

下面是一个固定的例子:

代码语言:javascript
复制
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)

你可以也在这里测试

问题是,在您定义的第二个片段中:

代码语言:javascript
复制
def get_user():
    items = get_from_database()
    return GetUserResult(
        items = items
        item_count = len(items)
    )

但是查询仍然期望有一个用户列表。

代码语言:javascript
复制
@strawberry.type
class Query:
    all_user: List[User] = strawberry.field(resolver=get_user)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70842878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档