Общая мутация Graphql

У меня есть набор достаточно похожих типов graphql, которые можно редактировать в целом. Я написал код для их отображения и изменения на стороне клиента, но теперь у меня проблемы с написанием запроса на изменение, который будет работать. Текущая реализация:

 let node1 = {
                 id: 1,
                 type: 'theme',
                 fields: {name: 'potatoes'}       
             };

 let node2 = {
                 id: 1,
                 type: 'subject',
                 fields: {
                             short_name: 'cool potatoes',
                             long_name: 'cool potatoes that grow on the mountain'
                         }       
             };

....

 save: function (node) {
    this.$apollo.mutate({
      // Query
      mutation: gql`mutation ($id: Int!) {
      update_data_${node.type}(where: {id: {_eq: $id}}, _set: ${node.fields}) {
        affected_rows
      }
  }`,
      variables: {
        id: node.id
      }
    })
  }

Не то чтобы он сейчас не работал (потому что не хочет правильно интерполировать поля), но и мне кажется, что я делаю что-то не так.


person Rince    schedule 22.10.2019    source источник


Ответы (1)


Я заставил это работать:

_set: ${JSON.stringify(node.fields).replace(/"(w+)"s*:/g, '$1:')}

Выглядит ужасно, но работает. Я надеюсь, что есть более «графический» способ сделать это.

person Rince    schedule 23.10.2019