REST API: PUT, но не нужны все данные в json - PullRequest
0 голосов
/ 05 апреля 2019

Это мой контроллер для обновления положенных пользовательских данных.Контроллер принимает до 4 значений.Я хотел бы сделать это, если я отправлю только имя на этот маршрут, Это изменит только имя, а остальное останется неизменным.(он не будет пустым).Можно ли сделать это?Нужно ли делать это в redux-саге, т. Е. Если оно пустое, обновлять его

// Update basic User's Data
exports.setUserdata = (req, res) => {
  const id = req.params.userId;
  User.update(
    {
      password: req.body.password,
      name: req.body.name,
      surname: req.body.surname,
      email: req.body.email,
    },
    { where: { id } },
  )
    .then(() => {
      res.status(200).json({ success: true });
    })
    .catch(() => {
      res.status(500).json({ error: 'Internal server error' });
    });
};

1 Ответ

0 голосов
/ 05 апреля 2019

Передайте параметры, которые вы хотите обновить, и не передавайте другие ключи.

Если req.body содержит только ключ name, вы можете просто взять эти 4 клавиши из req.body.

const updateParams = _.pick(req.body, ['name', 'password', 'surname', 'email'])
User.update(updateParams, {  where: { id } })

Если req.body имеет другие свойства со значением null или undefined, вы можете отфильтровать их после выбора.

const updateParams = _.chain(req.body).pick(['name', 'password', 'surname', 'email']).filter().value()
User.update(updateParams, {  where: { id } })

Конечно, это зависит от того, какой ORM вы используете, но я считаю, что большинство ORM не обновляют атрибуты, которые вообще не передаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...