Graphql 我需要了解中继输出字段getFatQuery的帮助
这是来自relay官方文档的代码,这是用于GraphQladdToDomutate的Graphql 我需要了解中继输出字段getFatQuery的帮助,graphql,relayjs,relay,graphql-js,Graphql,Relayjs,Relay,Graphql Js,这是来自relay官方文档的代码,这是用于GraphQladdToDomutate的 const GraphQLAddTodoMutation = mutationWithClientMutationId({ name: 'AddTodo', inputFields: { text: { type: new GraphQLNonNull(GraphQLString) }, }, outputFields: { todoEdge: { type: Gra
const GraphQLAddTodoMutation = mutationWithClientMutationId({
name: 'AddTodo',
inputFields: {
text: { type: new GraphQLNonNull(GraphQLString) },
},
outputFields: {
todoEdge: {
type: GraphQLTodoEdge,
resolve: ({localTodoId}) => {
const todo = getTodo(localTodoId);
return {
cursor: cursorForObjectInConnection(getTodos(), todo),
node: todo,
};
},
},
viewer: {
type: GraphQLUser,
resolve: () => getViewer(),
},
},
mutateAndGetPayload: ({text}) => {
const localTodoId = addTodo(text);
return {localTodoId};
},
});
我认为mutateAndGetPayload首先执行,然后输出字段?因为它使用localTodoId对象作为参数,所以我看到从mutateAndGetPayload返回的localTodoId对象
这是中继变异的代码。请看getFatQuery
export default class AddTodoMutation extends Relay.Mutation {
static fragments = {
viewer: () => Relay.QL`
fragment on User {
id,
totalCount,
}
`,
};
getMutation() {
return Relay.QL`mutation{addTodo}`;
}
getFatQuery() {
return Relay.QL`
fragment on AddTodoPayload @relay(pattern: true) {
todoEdge,
viewer {
todos,
totalCount,
},
}
`;
}
getConfigs() {
return [{
type: 'RANGE_ADD',
parentName: 'viewer',
parentID: this.props.viewer.id,
connectionName: 'todos',
edgeName: 'todoEdge',
rangeBehaviors: ({status}) => {
if (status === 'completed') {
return 'ignore';
} else {
return 'append';
}
},
}];
}
getVariables() {
return {
text: this.props.text,
};
}
getOptimisticResponse() {
return {
// FIXME: totalCount gets updated optimistically, but this edge does not
// get added until the server responds
todoEdge: {
node: {
complete: false,
text: this.props.text,
},
},
viewer: {
id: this.props.viewer.id,
totalCount: this.props.viewer.totalCount + 1,
},
};
}
}
我认为todoEdge来自GraphQL的输出字段?我在上面看到一个查看器查询,为什么它需要查询查看器?如何创建getFatQuery?如果有人能帮助我更多地了解这一点,了解接力突变,我将不胜感激
执行mutateAndGetPayload
然后将返回到输出字段
mutationWithClientMutationId
:定义突变的输入结构,其中输入字段将用输入值包装inputFields
:定义变异完成后字段的输出结构,我们可以查看和读取该结构outputFields
:此函数是中继突变的核心函数,它执行突变逻辑(如数据库操作),并将返回要暴露于突变输出字段的有效负载mutateAndGetPayload
mutateAndGetPayload
使用mutation从输入字段映射到输出字段
活动它收到的第一个参数是输入参数列表,我们可以读取这些参数来执行变异操作
我们从mutateAndGetPayload
返回的对象可以在输出字段中访问
resolve()
用作第一个参数
getFatQuery()
是我们使用GraphQL片段表示一切的地方
在我们的数据模型中,可能因该突变而改变的数据将执行,然后返回到outputFields
mutationWithClientMutationId
:定义突变的输入结构,其中输入字段将用输入值包装inputFields
:定义变异完成后字段的输出结构,我们可以查看和读取该结构outputFields
:此函数是中继突变的核心函数,它执行突变逻辑(如数据库操作),并将返回要暴露于突变输出字段的有效负载mutateAndGetPayload
mutateAndGetPayload
使用mutation从输入字段映射到输出字段
活动它收到的第一个参数是输入参数列表,我们可以读取这些参数来执行变异操作
我们从mutateAndGetPayload
返回的对象可以在输出字段中访问
resolve()
用作第一个参数
getFatQuery()
是我们使用GraphQL片段表示一切的地方
在我们的数据模型中,这种突变可能会导致变化请您解释一下“查看器”在“outputFields”中的作用,不要被名称弄糊涂了<
outputFields
中的code>viewer只是一个普通字段,带有自定义的GraphQLUser
类型和属性todos
和totalCount
。请您解释一下“viewer”在“outputFields”中的作用,不要被名称弄糊涂<“代码>查看器”在outputFields
中只是一个常规字段,具有自定义GraphQLUser
type,属性todos
和totalCount
。