2016-03-25 7 views
3

Relayには新しく、フラグメントのネストされたデータに問題があります。ネストされたフラグメントデータは常にリレーで同じ

次のクエリは、graphiqlでテストするときに正しいデータを返します。したがって、スキーマが正しいと確信しています。私はリレーで上記のクエリを使用する場合

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

しかし、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') 
); 
+1

可能な問題の1つは、GraphQLスキーマのbilling_addressを解決する方法です。あなたのbilling_address GraphQL型に 'field:id、!types.ID'または' globalIdField'を含めましたか? GraphQLスキーマを投稿することも役に立ちます。 – nethsix

+0

@nethsixご協力いただきありがとうございます。それは本質的に問題の原因です。私は私のバックエンドにMongoを使用していて、mongoがObjectIDを提供していない埋め込みドキュメントを使用していましたが、私のスキーマでそのオブジェクトにアクセスしようとしました。私は埋め込みからモンゴのリファレンスに切り替えただけで、完全に機能しました。再度、感謝します。 –

+0

私はこの提案が助けてくれてうれしいです。私は質問への答えとしてコメントを移動してもよろしいですか? – nethsix

答えて

1

GraphQLスキーマのbilling_addressを解決する方法として、考えられる1つの問題が考えられます。 billing_address GraphQLタイプにfield :id, !types.IDまたはglobalIdFieldを含めましたか? GraphQLスキーマを投稿することも役に立ちます。

関連する問題