Хочу сохранить модель после изминений:
Statistic.findOne({ 'user': user, 'type': type })
.then(function(commonStatistic) {
commonStatistic.data.words += words.length;
commonStatistic.data.comments += comments.length;
commonStatistic.data.visits++;
commonStatistic.updated = Date.now();
commonStatistic.save(function (err) {
if (err) {
// TODO: Add handler
}
});
});
Все поля, кроме поля (объекта) data сохраняются нормально, а дата не хочет ни в какую, что это за бред такой, все поля сохраняет а это нет, это баг или я не правильно что-то делаю?
UPD: Короче как оказалось просто так вложенные объекты не сохраняются, для того что бы они сохранялись при save() нужно, перед сохранением модели, их пометить: commonStatistic.markModified('data');. Мне данное решение помогло, но возможно есть решения лучше?
я бы коротко сделал бы так:
const
query = {user, type},
update = {
'$inc': {
'data.words': words.length,
'data.comments': comments.length,
'data.visits': 1
},
'$set': {
updated: Date.now()
}
};
Statistic.update(query, update, callback);
данный пример не создаст инстанс модели в памяти (экономия))) и изменит 1 документ
если важно иметь под рукой результирующий документ то:
Statistic.findOneAndUpdate(query, update, callback);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости