我正在尝试使用现在所谓的Relay Classic进行RANGE_ADD
突变(这可能是用Modern解决的)。我收到错误:
Warning: writeRelayUpdatePayload(): Expected response payload to include the newly created edge `newThingEdge` and its `node` field. Did you forget to update the `RANGE_ADD` mutation config?
所以,是的,有效载荷不会发送超出预期响应形状clientMutationId
的任何内容,因为请求变异不是要求它。
根据@Joe Savona,https://github.com/facebook/relay/issues/521,如果没有相交容器请求此数据,则可能会发生这种情况。但这对我来说并不完全正确。我的Route
正在请求:
things: (Component) => Relay.QL`
query {
allThings(variable: $variable) {
${Component.getFragment('things')},
}
}
`,
而我的fatQuery请求:
fragment on AddMockThing {
allThings(variable: "${variable}", first: 100) {
edges {
node {
id,
},
},
},
newThingEdge
}
现在您可能会说这些查询不一样,因为first: 100
版本中有额外的getFatQuery
,但如果我不使用它,我会收到错误:
Error: Error: You supplied the 'edges' field on a connection named 'allThings', but you did not supply an argument necessary to do so. Use either the 'find', 'first', or 'last' argument.
另一方面,如果我向first: 100
查询添加Route
,我会收到错误:Error: Invalid root field 'allThings'; Relay only supports root fields with zero or one argument.
在fatQuery和硬地之间徘徊。非常感谢帮助!
答案 0 :(得分:0)
您收到验证错误,因为Relay编译器正在查找连接参数(first: X
)。您可以通过添加@relay(pattern: true)
指令来禁用此特定验证。这将胖查询标记为匹配的“模式”,而不是具体的东西。
fragment on AddMockThing @relay(pattern: true) {
allThings(variable: "${variable}") {
edges {
node {
id,
},
},
},
newThingEdge
}