2016-05-13 2 views
0

Метод в модели:мангуст findByIdAndUpdate, не обновляя документ, кажется, получать правильные параметры

DistillerSchema.methods.update = function(o, u, cb){ 
    this.model.findByIdAndUpdate(o, u, cb); 
}; 

контроллер:

exports.update = function(req, res){ 
    console.log('Bodddyyy!!!!!!!', req.body); 
    console.log('params', req.params); 
    Distiller.update(req.body._id, req.body, function(err, distiller){ 
    console.log('update!!!!', distiller); 
    res.send({distiller:distiller}); 
    }); 
}; 

console.log:

Bodddyyy!!!!!!! { _id: '573592584435639d18242d3c', 
    name: 'chewbacca333333', 
    email: '[email protected]', 
    photo: 'https://s3.amazonaws.com/whiskey-upload/distillers/9ec98f42-7d43-4be9-a372-2a0e90cd4f30', 
    __v: 0, 
    social: 
    { facebook: 'https://www.facebook.com', 
    twitter: 'https://www.facebook.com', 
    instagram: 'https://www.facebook.com' }, 
    whiskeys: [], 
    location: [], 
    timestamp: '2016-05-13T08:37:44.257Z' } 
params { id: '573592584435639d18242d3c' } 
update!!!! { ok: 0, n: 0, nModified: 0 } 

Я не уверен, что случилось. Я передаю все правильные данные с клиентской стороны, и, согласно документации по mongoose, я чувствую, что передаю правильные параметры.

Он постоянно возвращается: {ОК: 0, п: 0, nModified: 0}

Может быть что-то с тем, как у меня есть метод в модели?

+1

Кажется, плохая идея попробовать и определить собственный метод 'update' на схеме. Попробуйте присвоить этому методу другое имя. – JohnnyHK

+0

Я просто думал то же самое. Похоже, что будет конфликт. – NoobSter

+0

Кроме того, это должен был быть статический метод. Мне нужно больше взглянуть на концепции статических/методов. – NoobSter

ответ

1

Я думаю, что, как было упомянуто с помощью комментариев, кажется, имена должны быть противоречивыми & вам нужно поменять тип метода.

+0

Спасибо. Я ждал, чтобы ответить @johnnyHK. Но это решило мою проблему. – NoobSter

0

Вы должны позвонить: req.body._id или req.params.id.

Но вы звоните req.body.id

+0

Хороший улов. Я забыл изменить его. Сначала я получил его на req.body._id, а затем попытался изменить его на req.params.id во время отладки, что привело к опечатке. Я убедился, что он указывает на правильное значение id, но все равно получает ту же ошибку. – NoobSter

Смежные вопросы