私は投票が可能な投票アプリケーションを作成しています。私は現在投票(本質的に、投票を作成する)に投票しています。リアクションリレー:複雑な突然変異ファットクエリー
マイスキーマ:
(かいつまん:世論調査は、メインストアからアクセス可能ですが、視聴者の投票や票は、()フィールドとして彼から直接アクセスすることができ票も分店からアクセスできます。しかし、世論調査の投票は、それによっても直接アクセスすることができます。
query {
store {
polls { //poll connection
edges {
node { //poll
votes { //vote connection
...
}
}
}
}
votes { //vote connection
edges {
node { //vote
...
}
}
}
}
viewer {
polls { //poll connection
edges {
node { //poll
votes { //vote connection
...
}
}
}
}
votes { //vote connection
edges {
node { //vote
...
}
}
}
}
}
この複雑なスキーマは、それは変更することができること。
ここですべてを定義する必要があるため、私は、私の脂肪クエリを定義する方法について、私は混乱します'変更可能なもの:
- 投票が作成されます(太いクエリではvoteEdge)。
- ストアの投票接続に投票が追加されました。
- ビューアーの投票接続に投票が追加されました。
- ストアのポーリング接続の投票で、投票接続に投票が追加されました。
- (閲覧者が投票の作成者でも可能な場合のみ可能):ビューアの下にある投票接続の投票によって、投票接続に投票が追加されます。
私の質問は、私の太ったクエリでこれをどのように表現すれば十分ですか?
getFatQuery() {
return Relay.QL`
fragment on CreateVoteMutation {
voteEdge,
viewer{
polls,
voteCount
votes,
},
store{
polls,
voteCount,
votes,
}
}
`;
}
投票に投票してもよろしいですか?
getFatQuery() {
return Relay.QL`
fragment on CreateVoteMutation {
voteEdge,
viewer{
polls{
edges{
node{
voteCount,
votes
}
}
},
voteCount
votes,
},
store{
polls{
edges{
node{
voteCount,
votes
}
}
},
voteCount,
votes,
}
}
`;
}
ありがとうございます!
もう一度、私が理解していないこと:リレーファットクエリーのポイントは、突然変異を実行した後に変更できるすべてのデータを定義することだと考えました。だから、あなたが答えで与えたオプションの中からどれを選ぶことができますか?それぞれは変化する可能性のあるものの一部しか示していません。 –
はい、それはあなたがそれらを必要とする限り、それが変更されるはずのすべてのデータのコンテキストを与えることです。 RelayのgetOptimisticResponseを使用すると、パフォーマンスのためにキャッシュストアからロードされる要約クエリを提供できます。一方、getFatQueryは、アプリケーションの最後に必要な全体的なクエリです。タイプとサブフィールド全体である必要はありません。 – vince