contact.save在使用[mongoose_model_object].save()方法时不是函数错误



这里auth是一个生成jwt并授权用户的中间件,我有一个名为Contact的猫鼬模型。然而,当我尝试执行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}`);
}
});

.save()在猫鼬模型的实例上可用。通过运行contact = {...req.body};,您将用一个新的纯JavaScript对象替换这样的实例,因此您将失去该函数。

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

let contact = new Contact(req.body);

当您说时,您正在替换模型Contact的值

let contact = new Contact();
//Here is the problem----
contact = {...req.body}; //<------------
//-----------------------
contact.userID=req.user.id;

最新更新