Django GraphQL 订阅不返回任何数据
Django GraphQL subscription not returning any data
我正在使用 Graphene、Django 和 graphene-subscriptions 来定义 GraphQL 订阅。每当创建具有特定 Author
的新 Book
时,我都会尝试接收更新。我已按照入门指南进行操作,并尝试使用以下代码:
class SubscriptionBook(graphene.ObjectType):
NewBooks = graphene.Field(BookType, Author = graphene.String(required=True))
def resolve_NewBooks(root, info, Author):
return root.filter(
lambda event:
event.operation == CREATED and
isinstance(event.instance, Book) and
event.instance.AuthorID == Author
).map(lambda event: event.instance)
不过好像不行。这条线似乎失败了:
event.instance.AuthorID == Author
我做错了什么?
我 运行 在定义这样的订阅时遇到的一个常见问题是在按 id
过滤时类型不匹配。
因为Author
是一个字符串,如果event.instance.AuthorID
是一个Django主键(一个int
值),那么
event.instance.AuthorID == Author
将 return False
.
您可以通过将 Author
值类型转换为 int
来解决此问题,如下所示:
event.instance.AuthorID == int(Author)
我正在使用 Graphene、Django 和 graphene-subscriptions 来定义 GraphQL 订阅。每当创建具有特定 Author
的新 Book
时,我都会尝试接收更新。我已按照入门指南进行操作,并尝试使用以下代码:
class SubscriptionBook(graphene.ObjectType):
NewBooks = graphene.Field(BookType, Author = graphene.String(required=True))
def resolve_NewBooks(root, info, Author):
return root.filter(
lambda event:
event.operation == CREATED and
isinstance(event.instance, Book) and
event.instance.AuthorID == Author
).map(lambda event: event.instance)
不过好像不行。这条线似乎失败了:
event.instance.AuthorID == Author
我做错了什么?
我 运行 在定义这样的订阅时遇到的一个常见问题是在按 id
过滤时类型不匹配。
因为Author
是一个字符串,如果event.instance.AuthorID
是一个Django主键(一个int
值),那么
event.instance.AuthorID == Author
将 return False
.
您可以通过将 Author
值类型转换为 int
来解决此问题,如下所示:
event.instance.AuthorID == int(Author)