Я не могу обновить вложенные данные в моем mongodb. вот мой модуль «обновления» на задней стороне.
exports.updateOne = (req, res) => {
if (!req.body) {
return res.status(400).send({
message: "Data to update can not be empty!"
});
}
const {id} = req.params;
console.log(req.body);
User.findByIdAndUpdate(id, req.body, { useFindAndModify: false, new: true}).populate('basic')
.then(data => {
if (!data) {
res.status(404).send({
message: `Cannot update User with id=${id}. Maybe User was not found!`
});
} else
res.send({ message: "User was dupdated successfully." , data});
})
.catch(err => {
res.status(500).send({
message:
err.message || "Error updating User with id=" + id
});
});
};
и моя внешняя сторона:
onChangePosition(e) {
const position = e.target.value;
this.setState(prevState => ({
currentStaff: {
...prevState.currentStaff,
basic:
{
...prevState.currentStaff.basic,
position:position
}
}
}));
}
onChangeEmail(e) {
const emailBusiness = e.target.value;
this.setState(prevState => ({
currentStaff: {
...prevState.currentStaff,
emailBusiness:emailBusiness
}
}));
}
updateStaff() {
StaffDataService.updateOne(
this.state.currentStaff.id,
this.state.currentStaff
).then(response => {
console.log(response.data);
})
.catch(e => {
console.log(e);
})
}
я могу правильно изменить состояние, и мои отправляемые данные " req.body "- это то, что я хочу (это объект). Нет проблем. как вы видите выше, я могу обновить «электронную почту», потому что она находится в основной части объекта, но не могу обновить «позицию» (вложенный элемент), потому что она находится внутри basi c (заполненные данные). Я пробовал разные методы с помощью mon goose и пробовал команду «$ set». Кто-нибудь может это решить?