Здравствуйте, столкнулся с проблемой. Т.к mongoose не имеет метода patch, решил попробовать сделать самостоятельно.
Когда я формирую объект foundUser, с помощью underscore _().pick(), с последующим добавление поля с хэшэм пароля в ответе получаю 500, хоть убей.
Когда же формирую при помощи добавления каждого параметра (Закомментированный код), у меня все хорошо апдейтится.
Суть в том, что я не хочу изменять конкретное поле и апдейтить юзера в зависимости от пришедших параметров, я хочу обновлять его целиком, полностью перезаписывая все поля.
В чем может быть причина такой реакции на pick или я что-то неправильно делаю?
// Patch
users.put('/:_id',
(req, res, next) => {
let _id = req.params._id;
let params = req.body;
User.findOne({_id: _id})
.then(foundUser => {
foundUser = _(params).pick('nickName', 'email', 'firstName', 'middleName', 'lastName');
if (_(params).has('password'))
foundUser.password = passHelpers.makePassword(params.password);
// if (_(params).has('nickName'))
// foundUser.nickName = params.nickName;
// if (_(params).has('email'))
// foundUser.email = params.email;
// if (_(params).has('password'))
// foundUser.password = passHelpers.makePassword(params.password);
// if (_(params).has('firstName'))
// foundUser.firstName = params.firstName;
// if (_(params).has('middleName'))
// foundUser.middleName = params.middleName;
// if (_(params).has('lastname'))
// foundUser.lastName = params.lastName;
// if (_(params).has('phone'))
// foundUser.phone = params.phone;
console.log(foundUser); // equal params obj.
console.log(typeof foundUser); // object
foundUser.save()
.then(updatedUser => {
res.status(200).send();
res.json(updatedUser);
next();
})
.catch(err => {
res.status(500).send(err);
});
})
.catch(err => {
res.status(500).send(err);
});
}
);
Прохожу курс по реакту, дошел до 7/9 урокаВсе до этого было более менее нормально