Graphql upsert(如果不存在则创建新的,如果存在则更新)

时间:2019-09-28 11:25:50

标签: reactjs graphql next.js

我一直在努力解决这个问题,但未能做到。

简短介绍
我有一个使用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>
  )

0 个答案:

没有答案