首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphene-Django Relay基于光标的分页不适用于动态数据

Graphene-Django Relay基于光标的分页不适用于动态数据
EN

Stack Overflow用户
提问于 2019-08-12 12:59:03
回答 1查看 1.1K关注 0票数 0

我正在使用Graphene-Django Relay规范获取动态数据。

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

当我在获取游标和数据之后添加一个新的post时,游标发生了变化。换句话说,指向数据确切偏移量的游标不再指向该数据。它指向了一个新的、不同的数据。因此,我不能使用以下命令实现基于指针的分页:

代码语言:javascript
复制
query fetchPosts ($cursor) {
    posts(first: 20, after: $cursor)...
}

因为游标随着数据的变化而变化,所以它与传统的基于偏移量的分页没有什么不同。我是不是漏掉了什么?我想要的是光标不变。比如这篇文章:

https://www.sitepoint.com/paginating-real-time-data-cursor-based-pagination/

如何使光标指向动态变化的相同数据?

EN

回答 1

Stack Overflow用户

发布于 2020-06-21 05:47:14

不幸的是,我认为这种行为是意料之中的。Relay的策略比传统的偏移量分页更灵活,但它也有同样的局限性。

如果底层数据发生更改,则表示它的分页也需要更改。

如果您希望避免这种情况,可以考虑以不同的方式对底层数据进行排序,这样新记录就不会改变您的分页。例如,如果您按创建时间对帖子进行排序,则新帖子将添加到列表的末尾,并且以前的所有分页仍将有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57455834

复制
相关文章

相似问题

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