Вы не можете изменить указатель, если вы не передадите его ссылкой (не const) или как двойной указатель. Передача по значению делает копию объекта, и любые изменения в объекте производятся копией, а не объектом. Вы можете изменить объект, на который указывает указатель, но не сам указатель, если вы проходите по значению.
Прочитайте этот вопрос, чтобы лучше понять различия в деталях . Когда пройти мимо ссылку и когда передать указатель в C ++?
mongoose делает это для вас за одну операцию.
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
);
Пожалуйста, имейте в виду, что с помощью этого метода вы не сможете использовать «pre» функции схемы.
http://mongoosejs.com/docs/middleware.html
По состоянию на последний mogoose findbyidandupdate необходимо иметь «новое: истинное» необязательное Параметр добавлен к нему. В противном случае вы вернете старый документ. Следовательно, обновление для Mongoose Version 4.x.x преобразуется в:
Contact.findByIdAndUpdate(
info._id,
{$push: {"messages": {title: title, msg: msg}}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);
upsert
здесь? – Tejas Manohar 10 May 2015 в 23:08safe
,upsert
иnew
? – CodyBugstein 30 June 2015 в 06:15