mongodb 使用[mongoose_model_object].保存()方法时,contact.save不是函数错误

ddrv8njm  于 11个月前  发布在  Go
关注(0)|答案(3)|浏览(101)

这里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}`);
}
});

字符串

v7pvogib

v7pvogib1#

.save()在mongoose Model的一个示例上可用。通过运行contact = {...req.body};,您将用一个新的普通JavaScript对象替换这样的示例,因此您将失去该功能。
可以将req.body作为构造函数参数传递:

let contact = new Contact(req.body);

字符串

nbnkbykc

nbnkbykc2#

当您说:

let contact = new Contact();

 //Here is the problem----

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

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

 contact.userID=req.user.id;

字符串

qlvxas9a

qlvxas9a3#

你需要像这样把参数传递给构造函数:

let contact = new Contact(..req.body)

字符串

相关问题