Как проверить, что данные параметров не определены в Express - PullRequest
0 голосов
/ 01 мая 2019

Я использую Nodejs и Express. Для обновления данных у меня есть следующий код

exports.update = (req, res) => {  
  const updatedUser = {
    username: req.body.username,
    age: req.body.age,
    dateOfBirth: req.body.dateOfBirth,
    occupation: req.body.occupation,
    businessName: req.body.businessName,
    joinDate: req.body.joinDate,
    familyMembers: req.body.familyMembers,
    isActiveMembership: req.body.isActiveMembership,
    membershipEnd: req.body.membershipEnd
  };

  User.findByIdAndUpdate(req.body._id,updatedUser);
};

Проблема в том, что если пользователь не передает ни одного из параметров, undefined добавляется в базу данных. Я, очевидно, не хочу проверять каждый параметр отдельно, если он не определен.

Итак, что было бы хорошим способом справиться с этим?

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Так что в настоящее время я использую следующий подход.

exports.update = (req, res) => {  
  const updatedUser = {
    username: req.body.username,
    age: req.body.age,
    dateOfBirth: req.body.dateOfBirth,
    occupation: req.body.occupation,
    businessName: req.body.businessName,
    joinDate: req.body.joinDate,
    familyMembers: req.body.familyMembers,
    isActiveMembership: req.body.isActiveMembership,
    membershipEnd: req.body.membershipEnd
  };

  const filteredValue = _.pickBy(updatedUser,function(item){
    return item !== undefined;
  })

  //Save the filteredValue in the DB

};

* оставит вопрос открытым, если кто-то предложит лучший подход.

0 голосов
/ 01 мая 2019

Переберите доступное свойство в req.body и установите соответственно обновляемые значения и значения:

const updatedUser = Object.keys(req.body).map(el => {
  return { [el]: req.body[el] }
})

const req = {
  body: {
    age: 2,
    name: 'hey',
    occupation: 'troll'
  }
}

const updatedUser = Object.keys(req.body).map(el => {
  return { [el]: req.body[el] }
});
console.log(updatedUser)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...