我几乎完成了NodeJS https://github.com/nodkz/graphql-compose-connection的包,它允许为用graphql-compose构建的graphql类型构造连接类型。
这个包完全遵循中继游标连接规范(https://facebook.github.io/relay/graphql/connections.htm),并添加了大量内容:filter arg (用于过滤记录)和sort arg (用于根据唯一索引对记录进行排序)。
因此,我有以下关于游标唯一性的问题:
1)游标在不同类型之间是否是唯一的?
2)在具有不同args?的一个连接之间,光标是否是唯一的?
例如:在UserConnection中,我有过滤器arg。我希望在第一个列表中显示所有用户,在第二个列表中显示在线用户(页面上同时显示2个列表)。两个列表中都可能存在一个具有相同游标的用户。
3)如果继电器在一个连接中获得类似的游标,它会抛出错误吗?
4)应该是游标base64编码,或者它可能包含字符串化的json对象?。
发布于 2016-07-15 14:20:32
1)游标在不同类型之间是否是唯一的?
如果您的问题是“游标是否应该是全局唯一的”,则答案是否定的。它们不像ID,在中继中必须是全局唯一的,以便于重取(用于区分)。光标可以像"100“或"101”这样的简单,尽管在实践中通常包含比这更具有描述性和/或结构化的内容。
2)在具有不同args?的一个连接之间,光标是否是唯一的?
例如:在UserConnection中,我有过滤器arg。我希望在第一个列表中显示所有用户,在第二个列表中显示在线用户(页面上同时显示2个列表)。两个列表中都可能存在一个具有相同游标的用户。
这是一个特定于实现的东西。光标的目的是启用分页,其内容是任意的。简单地说,它应该包含足够的信息,连同连接上的其他参数,使服务器上的GraphQL模式能够确定下一个(after)或前一个(before)页面应该返回什么。
3)如果继电器在一个连接中获得类似的游标,它会抛出错误吗?
我不确定是否会,但你可以试试,然后找出答案。即使它没有抛出一个错误,它可能是没有意义的。游标的目的是允许您为分页指定一个相对起点,所以如果光标"x“出现在连接中的两个不同位置,那么”前10之后“是什么意思?
4)应该是游标base64编码,或者它可能包含字符串化的json对象?。
Base64是我们按照约定所做的事情,不是因为它是强制的,而是为了更清楚地表明游标应该被认为是不透明的标记,其内部结构不应该被依赖。它们是特定于实现的。因此,如果需要,我相信可以使用JSON字符串,但是Base64编码它有一些好处。
https://stackoverflow.com/questions/38369825
复制相似问题