2016-08-07 8 views
0

ノードを削除したい突然変異(code)があります。これは、post rowId(データベースの行の主キー)とビューアIDに依存します。該当するコンポーネント(code)がレンダリングされるとき。次のクエリは、私が得る応答がviewer.idpost.rowId含まなぜフラグメントデータはフェッチされますが、リレー突然変異ではアクセスできません

query Queries { 
    viewer { 
    id, 
    ...F1 
    } 
} 
fragment F0 on Viewer { 
    id 
} 
fragment F1 on Viewer { 
    id, 
    ...F0 
} 

query Queries($id_0:ID!) { 
    post(id:$id_0) { 
    id, 
    ...F2 
    } 
} 
fragment F0 on Post { 
    id, 
    rowId 
} 
fragment F1 on Post { 
    rowId, 
    id 
} 
fragment F2 on Post { 
    headline, 
    body, 
    id, 
    ...F0, 
    ...F1 
} 

に送信されます。あなたは

{ 
    "data": { 
    "post": { 
     "id": "cG9zdDo0", 
     "headline": "You hit me with a cricket bat.", 
     "body": "Hello.", 
     "rowId": 4 
    } 
    } 
} 

、ここで、

{ 
    "data": { 
    "viewer": { 
     "id": "viewer" 
    } 
    } 
} 

しかし、私は、彼らがundefinedあるのでthis.props.post.idようDeletePostMutationにそれらを渡したい場合は、ここで見ることができるように。私はthis.props.postを検査すると、私はエラーがDeletePostMutationに渡さ小道具は、リレーによって取り込まれたデータはないことを示唆している、そしてあなたが新しいオブジェクトを構築しているようだcodeを見て、次の

console

答えて

5

を取得しますポストビューアとの間では、ポストとビューアがリレーによってフェッチされます。

handleDelete(event) { 
    this.props.relay.commitUpdate(
     new DeletePostMutation({ 
     post: { rowId: this.props.post.rowId }, 
     viewer: { id: this.props.viewer.id }, 
     }) 
    ) 
    } 

が代わりにこれを試してみてください:

handleDelete(event) { 
    this.props.relay.commitUpdate(
     new DeletePostMutation({ 
     post: this.props.post, 
     viewer: this.props.viewer, 
     }) 
    ) 
    } 

あなたはすでに内部その後、ポストリレーコンテナDeletePostMutationのGraphQLフラグメントを構成しているので

は、私はあなたがこれをやっている見ますDeletePostMutation各小道具は、アクセス可能なフラグメントに定義されたフィールドを持つ必要があります。

+0

@ jose-r-cruzありがとう。今、私の頭を叩く。それについて考えていたでしょう –

+0

グレート:うれしい –

関連する問題