Django Подписка GraphQL не возвращает никаких данных - PullRequest
0 голосов
/ 20 января 2020

Я использую графен, Django и графен-подписки для определения подписки GraphQL. Я пытаюсь получать обновления всякий раз, когда создается новый Book с указанным c Author. Я следовал руководству по началу работы и пытаюсь использовать следующий код:

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

Что я делаю не так?

1 Ответ

0 голосов
/ 22 января 2020

Одной из распространенных проблем, с которыми я сталкивался при определении подписок, таких как несоответствие типов при фильтрации по id.

Поскольку Author является строкой, если event.instance.AuthorID является первичным ключом Django (значение int), то

event.instance.AuthorID == Author

вернет False.

Это можно исправить путем приведения типа Author к int, например так:

event.instance.AuthorID == int(Author)
...