我在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将数据转换为字符串,因此无法工作。我试图创建模式:
@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'.)。
有办法绕过吗?
发布于 2022-01-26 23:09:34
下面是一个固定的例子:
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)你可以也在这里测试。
问题是,在您定义的第二个片段中:
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)https://stackoverflow.com/questions/70842878
复制相似问题