我一直在努力解决这个问题,但未能做到。
简短介绍
我有一个使用Drupal graphql(通过apollo)作为数据存储区的无服务器Next.js应用程序
到目前为止我可以成功完成的工作
我可以分别使用GET_DRUPAL_USER和UPDATE_USER。
问题
我正在尝试查看是否有办法有条件地组合GET_DRUPAL_USER和UPDATE_USER。
换句话说:如果用户不存在,请创建它(CREATE_USER)。如果存在:使用新数据更新它。 (UPDATE_USER)
代码段
为简单起见,我仅显示相关部分以显示如何构造代码。我可以从Drupal中清除GET用户,但我苦苦挣扎的是等待GET_DRUPAL_USER结果并有条件地执行另一个GraphQl CREATE_USER或UPDATE_USER的概念。
我的组件的当前布局
export default function rsvpGigProcess ({ id, user,loading }) {
...
const GET_DRUPAL_USER = gql`
query($my_email:[String]){
userQuery(filter: {conditions: [{field: "mail", value: $my_email, operator: EQUAL}]}) {
entities {
... on User {
uid
}
}
}
}
`
...
const [getDrupalUser, { error, loading, data }] = useLazyQuery(GET_DRUPAL_USER);
const _getOrCreateUser = () => {
getDrupalUser({
variables: {
my_email:"emailaddress@gmail.com"
}
})
}
...
return (
<button onClick={() => _getOrCreateUser()}>
Get or Create user
</button>
)