为什么提取片段数据但是Relay变异无法访问

时间:2016-08-07 11:45:34

标签: graphql relayjs

我有变异(code)我要删除一个节点。它依赖于post rowId - 它是数据库中行的主键 - 以及查看者ID。当相关组件(code)被渲染时。发送以下查询

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
}

我得到的回复包括viewer.idpost.rowId。正如你在这里看到的那样,

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

在这里,

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

但是,当我想将它们DeletePostMutation传递给this.props.post.id时,undefined就是this.props.post。当我检查Option Explicit Sub MyFunction() Dim MyValue As String Dim MyFolder As String 'Path containing the files for looping Dim MyFile As Variant 'Filename obtained by Dir function Dim wbk As Workbook Dim wSht As Worksheet Dim Matrice() As Variant Dim Dim1, Dim2 As Long Dim i, j As Long Dim Matrice_size As Long MyFolder = "\\EMEA.corning.com\ACGB-UD$\UD2\radoshits\My Documents\_Advanced Excel\SO Tests\" ' "E:\Excel Files\" 'Assign directory to MyFolder variable MyFile = Dir(MyFolder) 'Dir gets the first file of the folder MyValue = InputBox("Type the Value") Application.ScreenUpdating = False Matrice_size = 0 'Loop through all files until Dir cannot find anymore ' add only cells = MyValue to the Matrice array Do While MyFile <> "" Set wbk = Workbooks.Open(Filename:=MyFolder & MyFile) Set wSht = wbk.Sheets("Sheet1") 'Sheets1.Activate Dim1 = wSht.Range("A2", wSht.Range("A1").End(xlDown)).Cells.Count - 1 'Dim2 = wSht.Range("A1", wSht.Range("A1").End(xlToRight)).Cells.Count - 1 For i = 2 To Dim1 If wSht.Cells(i, 1) = MyValue Then ReDim Preserve Matrice(0 To Matrice_size) Matrice(Matrice_size) = wSht.Cells(i, 1).Offset(0, 1).Value Matrice_size = Matrice_size + 1 End If Next i wbk.Close savechanges:=True MyFile = Dir 'Dir gets the next file in the folder Loop ' copy the array to Sheet1 in this workbook, starting from Cell A2 >> can modify to your needs ThisWorkbook.Worksheets("Sheet1").Range("A2").Resize(UBound(Matrice) + 1).Value = Application.Transpose(Matrice) Application.ScreenUpdating = True End Sub 时,我得到以下内容

console

1 个答案:

答案 0 :(得分:5)

错误表明传递给DeletePostMutation的道具不是Relay提取的数据,看着code,您似乎正在构建帖子的新对象和< strong>查看器,而不是发送由中继提取的帖子和查看器

我看到你这样做了:

  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,
      })
    )
  }

由于您已经在 Post Relay容器中编写了 DeletePostMutation 的GraphQL片段,因此在DeletePostMutation中,每个prop都应该可以访问片段中定义的字段。