Graphene-Django Relay 仕様を使用して動的データを取得しています。
import graphene
from graphene_django.types import DjangoObjectType
from graphene_django.fields import DjangoConnectionField
from . import models
class PostType(DjangoObjectType):
class Meta:
model = models.Post
interfaces = (graphene.Node, )
class Query(graphene.ObjectType):
post = graphene.Field(PostType)
posts = DjangoConnectionField(PostType)
def resolve_posts(self, info, **kwargs):
return models.Post.objects.order_by('-score', '-id')
カーソルとデータを取得した後に新しい投稿を追加すると、カーソルが変化します。つまり、データの正確なオフセットを指していたカーソルは、もはやそのデータを指していません。これは、新しい別のデータを指しています。これにより、次を使用してカーソルベースのページネーションを実装できません。
query fetchPosts ($cursor) {
posts(first: 20, after: $cursor)...
}
データが変化するとカーソルが変化するため、従来のオフセットベースのページネーションと同じです。足りないものはありますか?カーソルに必要なのは、変更しないことです。この記事のように:
https://www.sitepoint.com/paginating-real-time-data-cursor-based-pagination/
カーソルが動的に変化する同じデータを指すようにするにはどうすればよいですか?