我正在尝试实施登录变异。该变异验证提供的id_token并通过会话记录用户。突变本身有效(用GraphiQL验证),但我遇到了将它与Relay集成的问题。
当用户登录时,整个中继存储可能会被更改,因为“viewer”是根查询。但我不想在胖查询中列出我的整个查询树。能以某种方式清除整个商店会很高兴,但我看不到用react-router-relay
做到这一点的方法。
接力突变:
export default class LoginMutation extends Relay.Mutation {
getMutation() {
return Relay.QL`mutation {login}`;
}
getVariables() {
return {
id_token: this.props.id_token
};
}
getFatQuery() {
// TODO: list everything?
return Relay.QL`
fragment on LoginPayload {
viewer
}
`;
}
getConfigs() {
return []; // TODO: not sure what to return...
}
}
用法:
Relay.Store.commitUpdate(new LoginMutation({id_token}), {
onSuccess: (resp) => {
history.push('/');
}
});
GraphQL架构:
input LoginInput {
id_token: String!
clientMutationId: String!
}
type LoginPayload {
viewer: Viewer
clientMutationId: String!
}
type Mutation {
login(input: LoginInput!): LoginPayload
}
interface Node {
id: ID!
}
type Query {
viewer: Viewer
node(id: ID!): Node
}
type Viewer implements Node {
id: ID!
user: User
ships: [Ship]
ship(id: ID!): Ship
}
schema {
query: Query
mutation: Mutation
}
答案 0 :(得分:0)
在 Dim i As Integer
i = 1
While Not rs.EOF
objDoc.Hyperlinks.add Anchor:=objDoc.Tables(i).Cell(2, 1).Range, _
Address:=rs("hyperlink")
With objDoc.Tables(i).Cell(2, 1).Range
.Collapse Direction:=wdCollapseStart
.Text = "Text to Insert" & Chr(11)
End With
objDoc.Tables(i).Cell(2, 2).Range.Text = "" & rs("description")
rs.MoveNext
i = i + 1
Wend
中,当您列出fatQuery
字段时,Relay会认为任何连接字段可能已更新。在某些需要参数的字段中(例如non-scalar
),您可以使用(first: n)
来绕过此要求。 This SO question讨论了该功能。