#node.js #mongodb #mongoose #httprequest
Вопрос:
В приложении Nodejs-Mongoose-MongoDB я не могу найти правильный код для обновления вложенного объекта внутри документа MongoDB. Документ имеет следующую структуру:
{ "_id": { "$oid": "60410b7f86e537057114eb22" },
"familyName": "Jansen",
"children": [
{
"_id": { "$oid": "60410f89d34f9f0e36ce4801" },
"firstName": "Johanna",
"sports": "football"
},
{
"_id": { "$oid": "60410f9ad34f9f0e36ce4802" },
"firstName": "Bob",
"sports": "atlethic"
},
{
"_id": { "$oid": "604118528bdcab190515f179" },
"firstName": "John",
"sports": "boxing"
}]}
Я хочу изменить значения в объекте (_id=»60410f89d34f9f0e36ce4801″) с «Джоанна» на «Джонатан» и с «футбол» на «футбол».
В узловом маршруте.в документе js у меня есть следующий код:
router.route('/:id/children/:id')
.patch(familyController.updateField);
Первый идентификатор предназначен для документа, а второй — для вложенного объекта.
В ‘familyController.js’ документ содержит следующую строку кода:
exports.updateField = (async (req, res, next) => {
const updatedField = await Family.findByIdAndUpdate( req.params.id, req.body );
if (!updatedField) {
return next(new AppError("This document can not be found", 404));
}
res.status(200).json({
status: 'success',
data: updatedField
});
});
Я попытался обновить документ с помощью почтальона:
localhost:3000/api/v1/family/60410b7f86e537057114eb22/children/60410f89d34f9f0e36ce4801
{
"firstName": "Jonathan",
"sports": "soccer"
}
Должно быть, я допустил одну или несколько ошибок. Я надеюсь, что кто-нибудь сможет помочь с правильным кодом и простым (для начинающих) объяснением.
Спасибо.