2016-07-06 7 views
0

ネストされた接続でRelay Mutationを記述する際に問題が発生しています。私は両方のparentNameとPARENTIDは「閲覧者」を指し、しかしconnectionName「のイベントは」それは「実体」タイプに存在するビューア上に存在しない持ってgetConfigsでネストされた接続のgetConfigsでparentName、parentId、およびconnectionNameをどのように定義しますか?

{ 
    viewer { 
    entity(id) { 
     events // mutate connection here 
    } 
    } 
} 

:ここでは型の構造であります。

以下のコードスニペットでは、getFatQueryで変数を使用して、エンティティIDを使用して突然変異したデータを取得する方法もわかりません。

getConfigsとgetFatQuery:

 getConfigs() { 
     return [{ 
      type: 'RANGE_ADD', 
      parentName: 'viewer', 
      parentID: this.props.viewer.id, 
      connectionName: 'events', 
      edgeName: 'eventEdge', 
      rangeBehaviors: { 
      '': 'append' 
      }, 
     }]; 
     } 

     getFatQuery() { 
     return Relay.QL` 
      fragment on addEventPayload { 
      viewer { 
       entity(id: $entityId) // how do I use variables in the getFatQuery { 
       events(first: 20) { 
        edges { 
        node { 
         status 
        } 
        } 
       } 
       } 
      }, 
      eventEdge 
      } 
     `; 
     } 

私はそれが意味をなさない場合ので、私の質問についての質問をすること自由に感じなさい私の質問を明確に支援するよりも幸せです。

ありがとうございました!

答えて

3

将来的に誰かがこのIDを渡すことやネストされたクエリ/フィールドを扱うことについて心配する必要はありません。 Relayは、クライアント上の適切なレコードを見つけて更新するだけです。 This issue on Githubは、freiksenetからのコメントを取り上げるのに役立ちました。

上記の例では、viewerを通過する代わりに、entityにまっすぐに進みます。

outputFields:

outputFields: { 
    eventEdge: { 
     type: eventEdge, 
     resolve: async({event}) => { 
     const eventsByOwner = await Event.getEventsByOwnerId(event.ownerId) 
     const eventIndex = eventsByOwner.findIndex(evt => evt.id == event.id); 
     const cursor = offsetToCursor(eventIndex); 
     return { 
      cursor: cursor, 
      node: event 
     }; 
     } 
    }, 
    entity: { 
     type: entity, 
     resolve: async({event}) => { 
     return Entity.getEntity(event.ownerId) 
     } 
    }, 
    } 

getConfigsとgetFatQuery:

getConfigs() { 
    return [{ 
     type: 'RANGE_ADD', 
     parentName: 'entity', 
     parentID: this.props.entityId, 
     connectionName: 'events', 
     edgeName: 'eventEdge', 
     rangeBehaviors: { 
     '': 'append' 
     }, 
    }]; 
    } 

    getFatQuery() { 
    return Relay.QL` 
     fragment on addEventPayload @relay(pattern: true) { 
     entity { 
      events 
     }, 
     eventEdge 
     } 
    `; 
    } 

注:接続クエリの引数に渡さないときに問題に遭遇していないことを確認します@relay(pattern: true)を使用し、このタイプの最後のクエリに戻ります。

関連する問題