2

上次查看时,Relay.js 不支持基于会话的 NetworkLayer(只能同时使用一个 NetworkLayer)。

因此,需要 queue-hack ( https://github.com/codefoundries/isomorphic-material-relay-starter-kit/blob/master/webapp/renderOnServer.js#L66 ) 来支持多个会话。它不能在生产中使用,因为每个渲染都完全阻塞了另一个渲染(包括数据获取)。

目前在这个问题上的状态如何?我在哪里可以跟踪进度(github问题)并可能提供帮助?

4

3 回答 3

2

这是您正在寻找的 GitHub 问题,目前在使 Relay 的大部分“上下文”方面取得了很大进展。有关更多详细信息,请参阅该问题。

于 2016-03-29T06:18:49.520 回答
1

由于 0.6 版isomorphic-relayisomorphic-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);
});
于 2016-09-23T15:17:57.030 回答
0

听起来问题出在 relay.JS 中,这意味着如果您想提供帮助,您应该从他们的 GitHub 页面开始。

于 2016-03-28T22:28:44.320 回答