Graphql Calling Ax ios Производительность / Рефакторинг нескольких вызовов - PullRequest
0 голосов
/ 25 февраля 2020

Я могу удалить и добавить данные в мой файл JSON, но если я продолжаю нажимать кнопку (переключение добавления / удаления), я получаю сбой сети. Я предполагаю, что не могу сделать несколько таких запросов?

const handleSave = save => {
  if (save.toLowerCase() === 'save') {
    props
      .addSaved({
        variables: {
          id: props.id,
        },
      })
      .then(res => {
        setSaved('Unsave');
        setSavedPropData(res.data.addSaved);
      });
  } else {
    props
      .deleteSaved({
        variables: {
          id: savedPropData.id,
        },
      })
      .then(() => setSaved('Save'));
  }
};

Выше приведен фрагмент моего дескриптора, сохраняющего данные. Таким образом, каждое нажатие переключает Save или Unsave, а затем добавляет или удаляет данные в моем JSON. В настоящее время я использую json сервер для тестирования приложения.

const savedMutate = gql`
  mutation addSaved($id: String) {
    addSaved(id: $id) {
      id
    }
  }
`;

const deletedMutate = gql`
  mutation deleteSaved($id: String) {
    deleteSaved(id: $id) {
      id
    }
  }
`;

export default _.flowRight(
  graphql(savedMutate, {name: 'addSaved'}),
  graphql(deletedMutate, {name: 'deleteSaved'}),
)(withNavigation(Card));

Есть ли лучший способ сделать это, если я разверну приложение в производство? В настоящее время у меня происходит сбой сети, когда я переключаюсь быстро. Я просто попробовал еще раз, потому что мое приложение обновляется каждый раз, и пока оно обновляется, я пытаюсь сохранить его в своей базе данных, но оно не было полностью смонтировано? Это происходит только в процессе разработки?

мутация:

addSaved: {
  type: SavedType,
  args: {
    id: {type: GraphQLString},
  },
  resolve(parentValue, {id}) {
    return axios
      .post(`http://localhost:3000/saved`, {id})
      .then(res => res.data);
  },
},
deleteSaved: {
  type: SavedType,
  args: {
    id: {type: GraphQLString}
  },
  resolve(parentValue, {id}) {
    return axios
      .delete(`http://localhost:3000/saved/${id}`)
      .then(res => res.data);
  },
},

1 Ответ

1 голос
/ 25 февраля 2020

Если вы используете свой сервер с помощью nodemon и пишете в какой-то файл в ответ на запросы, а этот файл просматривается с помощью nodemon, то ваши запросы всегда будут запускать перезапуск сервера. Поскольку первый запрос перезапускает сервер, любые последующие запросы сразу после этого завершатся сбоем, поскольку ваш сервер теперь будет недоступен во время запуска резервного копирования.

Вам необходимо настроить nodemon, чтобы игнорировать соответствующие файлы или каталоги . Таким образом, любые изменения в файлах не приведут к перезапуску вашего сервера nodemon.

...