Хочу сохранить модель после изминений:
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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Это происходит, потому что вы вместо знака присваивания (=) используете знак сравнения (==)Изменять стиль нужно именно знаком =:
Скрипт гамбургера не работает в Google Chrome, но прекрасно работает в FireFox, если я задаю ему if($(window)width()<=800){}
Как реализовать на нативном js аналогичную функцию appendTo (jquery) ?