3

我是 Relay 的新手,并且在片段上的嵌套数据方面遇到问题。

以下查询在我在其 graphiql 中进行测试时返回正确的数据,因此我确信我的架构是正确的。

 {
  viewer {
    customers {
      name
      billing_address {
        city
      }
    } 
  }
}

但是,当我将上述查询与 Relay 一起使用时,这customer.name将是正确的,但customer.billing_address.city对于每个客户都是一样的。我很困惑为什么一些数据是正确的,而嵌套数据只是被复制。

我将不胜感激有关该问题的任何帮助,如果需要更多信息,我很乐意添加。以下是我项目中目前唯一的中继代码,我认为问题可能出在哪里。

class App extends Component {
  render() {
    console.log(this.props.viewer.customers);
    return (
      <div>
      {this.props.viewer.customers.map((customer) => (
        <div>
          <div>{customer.name}</div>
          <div>{customer.billing_address.city}</div>
        </div>
      ))}
      </div>
    );
  }
}

class AppHomeRoute extends Relay.Route {
  static queries = {
    viewer: () => Relay.QL`
      query {
        viewer
      }
    `,
  };
  static routeName = 'AppHomeRoute';
}

const AppContainer =  Relay.createContainer(App, {
  fragments: {
    viewer: () => Relay.QL`
      fragment on Viewer {
        customers{
          name
          billing_address{
            city
          }
        }
      }`
  },
});

ReactDOM.render(
  <Relay.RootContainer
    Component={AppContainer}
    route={new AppHomeRoute()}
  />,
  document.getElementById('root')
);
4

1 回答 1

1

一个可能的问题是您如何在 GraphQL 架构中解析 billing_address。您是否在您的 billing_address GraphQL 类型中包含了field :id, !types.IDor ?globalIdField发布您的 GraphQL 架构也可能会有所帮助。

于 2016-03-29T01:19:53.870 回答