我有点困惑如何在 graphql 中执行多重突变。
我已经阅读了有关使用graphql()
函数或compose()
函数的文章,但我不明白这些是传统的方法(版本 2)还是仍然是一种有效的方法。
我目前正在使用带有 grandstack 的 apollo 3.3,在我的组件中我执行以下操作来执行突变(我使用useMutation()
了由提供的钩子ApolloClient
)
const CreateFBUser = gql `
mutation CreateFBUser($name: String, $fbId: String!) {
CreateFBUser(name: $name, fbId: $fbId) {
_id
id
fbId
name
}
}
`
function FbUserForm() {
const { id } = useParams()
const [formState, setFormState] = useState({})
const [createFBUser,{data: createData}] = useMutation(CreateFBUser)
const { loading, error, data } = useQuery(FBUser,{
variables: {_id: id}
});
...
..
.
如您所见,我没有使用诸如<Query>
, 之类的组件..
第一个问题:这个组件与 apollo 旧版本有关吗?仍然经常使用还是useMutation()
钩子是阿波罗 3 的首选?
第二个问题:我需要执行与第一个突变相关的第二个突变,并且我需要从第一个突变生成的 id 来执行第二个突变
//the first mutation
const CreateFBUser = gql `
mutation CreateFBUser($name: String, $fbId: String!) {
CreateFBUser(name: $name, fbId: $fbId) {
_id
id
fbId
name
}
}
`
//the second mutation (pseudocode)
const AddFBUserMemberOf = gql`
mutation AddFBUserMemberOf($from: _GroupInput!, $to: _FBUserInput!) {
AddFBUserMemberOf(from: $from, to: $to) {
from
to
}
}
`
此外,应根据值/变量/其他内容有条件地执行第二次突变