mongoose findByIdAndUpdate,而不是更新文档,似乎正在接收正确的参数

时间:2016-05-13 19:31:46

标签: node.js mongoose

模型中的方法:

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: 'chewbacca@chew.com',
  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文档,我觉得我传递了正确的参数。

它不断返回:{ok:0,n:0,nModified:0}

也许是我在模型中使用该方法的方法?

2 个答案:

答案 0 :(得分:1)

我认为正如通过评论所提到的那样,这些名字似乎是相互矛盾的。你需要交换方法类型。

答案 1 :(得分:0)

您应致电:req.body._idreq.params.id

但您正在致电req.body.id