由于 0.6 版isomorphic-relay
(isomorphic-material-relay-starter-kit
在底层使用)支持每个 HTTP 请求网络层,允许将会话数据传递到 GraphQL 服务器。重要的是它为每个请求使用隔离的 Relay 存储,因此没有用户可以看到另一个用户的私人数据。
示例用法:
app.get('/', (req, res, next) => {
// Pass the user cookies on to the GraphQL server:
const networkLayer = new Relay.DefaultNetworkLayer(
'http://localhost:8080/graphql',
{ headers: { cookie: req.headers.cookie } },
);
// Pass the network layer to IsomorphicRelay.prepareData:
IsomorphicRelay.prepareData(rootContainerProps, networkLayer).then({ data, props } => {
const reactOutput = ReactDOMServer.renderToString(
<IsomorphicRelay.Renderer {...props} />
);
res.render('index.ejs', {
preloadedData: JSON.stringify(data),
reactOutput
});
}).catch(next);
});