обновление строки в базе данных mongoDB [дубликат]

Вы не можете изменить указатель, если вы не передадите его ссылкой (не const) или как двойной указатель. Передача по значению делает копию объекта, и любые изменения в объекте производятся копией, а не объектом. Вы можете изменить объект, на который указывает указатель, но не сам указатель, если вы проходите по значению.

Прочитайте этот вопрос, чтобы лучше понять различия в деталях . Когда пройти мимо ссылку и когда передать указатель в C ++?

47
задан user1460015 25 March 2013 в 21:08
поделиться

1 ответ

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);
        }
    );
106
ответ дан fino 19 August 2018 в 14:21
поделиться
  • 1
    Почему upsert здесь? – Tejas Manohar 10 May 2015 в 23:08
  • 2
    @TejasManohar его просто показать, что у вас может быть несколько вариантов. – fino 14 May 2015 в 22:29
  • 3
    этот ответ мне очень помог. Но что с этими параметрами, safe, upsert и new? – CodyBugstein 30 June 2015 в 06:15
  • 4
    & Quot; новый & Quot; - чтобы вы получили обновленный документ взамен (прочитайте описание ответа) & quot; upsert & quot; - Необязательный. Если установлено значение true, создается новый документ, если документ не соответствует критериям запроса. Значение по умолчанию - false, которое не вставляет новый документ, если совпадение не найдено. docs.mongodb.org/manual/reference/method/db.collection.update "safe & quot; - stackoverflow.com/questions/4974686/… – fino 1 July 2015 в 13:33
  • 5
    Спасибо за реальный ответ :) – Bruce 7 July 2015 в 07:32
Другие вопросы по тегам:

Похожие вопросы: