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つは、GraphQLスキーマのbilling_addressを解決する方法です。あなたのbilling_address GraphQL型に 'field:id、!types.ID'または' globalIdField'を含めましたか? GraphQLスキーマを投稿することも役に立ちます。 – nethsix
@nethsixご協力いただきありがとうございます。それは本質的に問題の原因です。私は私のバックエンドにMongoを使用していて、mongoがObjectIDを提供していない埋め込みドキュメントを使用していましたが、私のスキーマでそのオブジェクトにアクセスしようとしました。私は埋め込みからモンゴのリファレンスに切り替えただけで、完全に機能しました。再度、感謝します。 –
私はこの提案が助けてくれてうれしいです。私は質問への答えとしてコメントを移動してもよろしいですか? – nethsix