Javascript 使用[mongoose\u model\u object].save()方法时,contact.save不是函数错误

Javascript 使用[mongoose\u model\u object].save()方法时,contact.save不是函数错误,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,这里auth是一个生成jwt并授权用户的中间件,我有一个名为Contact的mongoose模型。但是,当我尝试执行contact.save时,它会将我作为联系人抛出一个异常。save不是一个函数 router.post('/',auth,async (req,res)=>{ try { let contact = new Contact(); contact = {...req.body}; contact.userID=req.user.id; const {error} =

这里auth是一个生成jwt并授权用户的中间件,我有一个名为Contact的mongoose模型。但是,当我尝试执行contact.save时,它会将我作为联系人抛出一个异常。save不是一个函数

router.post('/',auth,async (req,res)=>{
try
{
 let contact = new Contact();
 contact = {...req.body};
 contact.userID=req.user.id;

 const {error} = validateContact(contact);
 console.log(`ERROR - ${error}`);

 if(error){
  return res.status(400).json({"status":1,"message":error.details[0].message});
 } 

 const contact1 = await contact.save();

 res.status(200).json({"status":0,"message":"contact addedd","contact":contact1});
}
catch(error){
console.log(`contacts - ${error.message}`);
}
});
.save在mongoose的实例上可用。通过运行contact={…req.body};您正在用一个新的普通JavaScript对象替换这样的实例,因此您失去了该函数

您可以将req.body作为构造函数参数传递:

let contact = new Contact(req.body);
.save在mongoose的实例上可用。通过运行contact={…req.body};您正在用一个新的普通JavaScript对象替换这样的实例,因此您失去了该函数

您可以将req.body作为构造函数参数传递:

let contact = new Contact(req.body);

当您说时,您正在替换模型联系人的值

 let contact = new Contact();

 //Here is the problem----

 contact = {...req.body}; //<------------

 //-----------------------

 contact.userID=req.user.id;

当您说时,您正在替换模型联系人的值

 let contact = new Contact();

 //Here is the problem----

 contact = {...req.body}; //<------------

 //-----------------------

 contact.userID=req.user.id;

非常感谢你的回答它确实解决了问题非常感谢你的回答它确实解决了问题