У меня есть схема mongoose для профиля пользователя, куда они могут добавить опыт работы (в настоящее время это массив объектов в схеме).
Я использовал следующий код, чтобы найти профиль пользователя и получить объект опытав качестве входных данных затем присоедините его к массиву в схеме и верните сохраненный профиль с опытом:
Router.post('/experience',
Passport.authenticate('jwt', {session: false}), async (req, res) => {
try {
const myProfile = await Profile.findOne({user: req.user._id});
if (myProfile) {
const exp = {
title: req.body.title,
company: req.body.company,
location: req.body.location,
from: req.body.from,
to: req.body.to,
isCurrent: req.body.isCurrent,
description: req.body.description
};
// add to Profile experience array
Profile.experience.unshift(exp); // adds to beginning of array
const savedProfile = await Profile.save(); // have also tried myProfile.save() but that doesn't work too
if (savedProfile) {
console.log(savedProfile);
res.json({message: `Profile Updated Successfully`, details: savedProfile})
}
else { throw `Experience Details Not Saved`}
}
} catch (err) { res.json(err); }
});
Проблема здесь в том, что ответ всегда является пустым объектом, и когда я проверяю свою базу данных, опыта нетсохранены.Этот код неправильный?То же самое работает с Обещаниями, но я хочу попробовать новый способ ведения дел.