Как запретить ax ios отправлять нулевые значения? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть запрос ax ios .post (), настроенный для обновления документа в моей коллекции MongoDB путем отправки текущего состояния, обновленного в текстовых полях.

У меня изначально настроено состояние null:

this.state = {

  editedCustomer: {
    name: null,
    surname: null,
    alias: null,
    email: null,
    phoneNo: null,
    _id: null
  },

}

Эти значения обновляются непосредственно из текстовых полей, поэтому всякий раз, когда текстовое поле получает входные данные, оно обновляет состояние, которое затем отправляется с помощью ax ios следующим образом:

axios.patch(`${APIURL}/customers/updateCustomer`, {
      'name': this.state.editedCustomer.name,
      'surname': this.state.editedCustomer.surname,
      'alias': this.state.editedCustomer.alias,
      'email': this.state.editedCustomer.email,
      'phoneNo': this.state.editedCustomer.phoneNo,
      '_id': this.state.editedCustomer._id
    })

Однако, моя проблема в том, что если я обновлю только некоторые поля (скажем, я хочу обновить только имя клиента), остальные эти поля будут опубликованы на моем бэкэнде как пустые, а моя база данных заполнена обновленными значениями, а null заменяет остальные поля.

Можно ли публиковать только ненулевые значения с помощью ax ios, или это изменение должно быть в маршруте my / updateCustomer в моем бэкэнде. Спасибо :)

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Вы должны просто нанести на карту этот Объект, используя Object.keys и "отфильтровать" значения, которые являются нулевыми

let data = {};//<- Data to send with Axios

Object.keys(this.state.editedCustomer).map((key) => {
  if(editedCustomer[key]) {
    data[key] = editedCustomer[key]
  }
});

const dataToSend = JSON.stringify(data);

, тогда вы просто публикуете dataToSend с помощью Axios / fetch ...

0 голосов
/ 31 марта 2020

Ax ios отправляет значение NULL, потому что если вы обновляете только определенные значения, другие значения, которые не указываются, имеют значение NULL.

То, что вы должны сделать, - это ваш маршрут / updateCustomer в вашем бэкэнд, вы обновляете только значения, переданные из ax ios вместо обновления всего объекта.

...