Apollo Stack支持像Relay这样的节点接口的全局对象标识吗?

我在阿波罗堆栈和继电器方面都很新。 我正试图在他们之间select投入我的时间。 在阅读完本书学习GraphQL和Relay之后 ,我转向Apollo了解它提供的内容,但现在互联网上的资源并不多。

我最近有这个问题,但无法find答案:Apollo是否支持像Relay这样的全局对象标识与节点接口? 如果不是,它是否有其他解决scheme来支持全球对象识别?

是的

它目前的工作方式( apollo-client 0.5版本)是ApolloClient构造函数接受的ApolloClient函数。

如果所有节点都有一个id字段,并且它们在所有节点上都是唯一的(例如在Graphcool中,我们使用这个库生成唯一的id):

 import ApolloClient from 'apollo-client'; const client = new ApolloClient({ dataIdFromObject: o => o.id }); 

你必须确保在你想要规范化的每个查询中包含id字段。

如果您的ID仅适用于每种types,则可以将它们与__typename结合以创build唯一的标识符:

 const client = new ApolloClient({ dataIdFromObject: (result) => { if (result.id && result.__typename) { return result.__typename + result.id; } // Make sure to return null if this object doesn't have an ID return null; }, }); 

代码取自官方的Apollo文档 。