首页 > 解决方案 > 使用 [mongoose_model_object].save() 方法时,contact.save 不是函数错误

问题描述

这里 auth 是一个生成 jwt 和授权用户的中间件,我有一个名为 Contact 的 mongoose 模型。但是,当我尝试执行 contact.save() 时,它会抛出异常,因为 contact.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}`);
}
});

标签: javascriptnode.jsmongodbexpress

解决方案


.save()在 mongoose Model的实例上可用。通过运行contact = {...req.body};,您将使用新的纯 JavaScript 对象替换此类实例,因此您将失去该功能。

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

let contact = new Contact(req.body);

推荐阅读