Сервер получает три динамических параметра: карта, раздел, подраздел.
Как я могу использовать mongoose для обновления пользовательских навыков в каком-то подразделе?
Модель пользователя:
{
_id: some_id,
skills: {
[map_id]: {
[section_id]: {
[subsection_id]: {
...new_data
}
}
},
...other mapKeys
}
}
Сейчас я использую:
userScheme.findById(userId, function(userErr, user) {
const body = req.body,
map_id = body.map,
section_id = body.section,
subsection_id = body.subsection,
new_data = body.data;
let skills = {};
let createNestedObject = function( base, names ) {
for( var i = 0; i < names.length; i++ ) {
base = base[ names[i] ] = base[ names[i] ] || {};
}
};
createNestedObject( skills, [map, section, subsection] );
skills[map_id][section_id][subsection_id] = new_data;
user.skills = skills;
user.save();
});
Но он перезаписывает данные, полученные ранее: (