1

connection/arrayconnection.js,似乎所有的功能都倾向于使用array
例如:offsetToCursor是生成Cursor的唯一方法。这是否意味着它是我必须遵循的设计模式,或者暗示我应该在使用除array.

顺便说一句:
作为 web 开发的新手,我有点困惑如何实现合格的中继服务器。
是否有一些设计 graphql-relay 服务器的指南,我应该一直遵循graphql-relay-jsFacebook 与中继服务器一起使用的数据库吗?mysql 还是?
我不确定在这里问这个是否合适,但是 graphql-relay-js 的主题很少出现在网络上。
非常感谢,原谅我的不礼貌。

var PREFIX = 'arrayconnection:';
/**
 * Creates the cursor string from an offset.
*/
export function offsetToCursor(offset: number): ConnectionCursor {
    return base64(PREFIX + offset);
}

附加问题:
也许我从developers.facebook.com/docs/graph-api 得到一些想法。
似乎应该为分页查找做一个数组样式缓存(对此不确定)。但是 graph-api 看起来与 graphql-relay-js 有点不同(graph-api 仍然是旧式 restful 风格的一部分吗?),
graph-api 和 graphql-relay-js 之间有什么关系?graphql-relay-js 是在 facebook 中设计 graphql 服务器的通用设计指南吗?非常感谢!请给我一些提示

4

1 回答 1

4

如果您希望 Relay 执行有效的分页,连接是您的架构可以实现的设计模式。它如何在后端实现是一个实现细节。它可能由类似数组的东西支持,也可能不支持(想想 Facebook 上无限滚动的新闻提要,它由一个非常复杂的后端服务排名:这显然不是由数组支持)。如果您的数据源具有类似数组的性质,我们提供该arrayconnection.js模块是为了演示如何做到这一点。如果它没有,或者不能有效地转换成它,你最好从头开始实现一些东西。

游标是不透明的标识符。如果您使用数组源或典型的数据库后端(如 MySQL),则可以使用数组索引或某种主键,但同样,细节是特定于实现的,应该选择适合您的后端。唯一的要求是光标应该对服务器上所需的任何信息进行编码,以便能够在该点之后(或之前)返回下一页结果。

graphql-relay-js只是一个模块的集合,为在 JavaScript 中构建与 Relay 兼容的 GraphQL 模式提供了一些帮助。模式为您的数据提供统一的接口,但实际的底层存储可以是您想要插入其中的任何东西(MySQL 数据库、内存中的对象、一些 REST 服务)。对于简单的示例,请查看 Relay repo 中examples目录。为了说明如何将模式放在非传统数据库的前面,是一个模式示例,它借助 Redis 中的索引和 memcached 中的缓存数据从 Git 存储库中读取其数据.

远离developers.facebook.com/docs/graph-api;尽管名称中有“图”,但这是完全不同的东西,与 Relay 使用的GraphQL分层查询语言无关。

于 2016-01-29T07:21:32.840 回答