猫鼬要求:真的似乎不起作用?

时间:2016-08-26 12:26:14

标签: node.js mongodb mongoose

我有以下Mongoose架构。

var ContactSchema = new Schema({
  name: { type: String, required: true },
  company: { type: String, required: true },
  email: { type: String, required: true },
  phone: { type: String, required: true }
},{ versionKey: false });

当我创建联系帖子时,通过

var contact = new Model(req.body);
contact.save( function( err, result ) {
  if( err ) {
    res.status(422).json( err );
  }
  else {
    res.status(200).json( result );
  }
})

并且不提交所有字段,我得到了错误422。 required: true有效。

但是,当我通过

更新现有联系人时
Model.findByIdAndUpdate(req.params.id, req.body, {new:true, select:    defaultProjection}, function( err, contact ){

if( err ) {
  res.status(422).json( err );
}
else {
  res.status(200).json( contact );
}

});

然后,如果我离开,我不会收到任何错误,例如,email为空。

我做错了什么? : - )

1 个答案:

答案 0 :(得分:1)

您需要use $set上的update

试试这个:

Model.findByIdAndUpdate(req.params.id, {'$set' : req.body}, 
    {new:true, select: defaultProjection}, function( err, contact ){

if( err ) {
  res.status(422).json( err );
}
else {
  res.status(200).json( contact );
}