У меня есть база данных, которая включает в себя проекты, и каждый проект имеет множество ссылок. Мой express.js код при добавлении ссылки как таковой:Как узнать, добавляет ли Mongoose addToSet что-то?
router.get('/links/add', function(req, res){
Project.findOneAndUpdate(
{_id: req.query.pid},
{$addToSet: {links: {url: req.query.url , title: req.query.title} }},
{safe: true, upsert: true, new:true},
function(err, project) {
if(err) {
//do stuff
} else {
//Something was added to set!
}
}
);
});
Он отлично работает и не добавляет дубликатов, но мне нужно знать, когда что-то на самом деле обновляется. Теперь вы можете видеть, что я включил параметр new:true
, который возвращает новый документ, поэтому я мог бы просто удалить его и посмотреть, существует ли ссылка в старой версии, но есть ли способ сделать это с включенным флагом?
Это похоже на базовую функцию, но я не мог найти что-либо в документации.
Вы хотите посмотреть новую обновленную информацию? Или вы пытаетесь определить, обновлено ли что-то? Не могли бы вы просто запустить событие в инструкции else? – ChadF
Я хочу посмотреть, что-то обновлено. Я уже вижу «обновленный» документ (прочитайте: состояние документа после запроса) с флагом «new: true», я просто не вижу способа выяснить, действительно ли что-то было добавлено. Код вводится в блок else, даже если ничего не было добавлено, это не считается ошибкой mongoose. – Bimp
Хммм, я думаю, что лучший способ - сделать поиск до поиска и обновления. Затем сравните значение find со значением, которое вы собираетесь обновить. – ChadF