javascript - 使用 [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}`);
}
});
解决方案
.save()
在 mongoose Model的实例上可用。通过运行contact = {...req.body};
,您将使用新的纯 JavaScript 对象替换此类实例,因此您将失去该功能。
req.body
您可以改为作为构造函数参数传递:
let contact = new Contact(req.body);
推荐阅读
- angular - 如何使用生成的环境枚举生成角度选项
- batch-file - 用于更改文件名中日期格式的批处理作业
- sql - 如何在 CASE 语句中检查 NULL 以及 PostgreSQL DB 中的数字类型?
- python - 如何使用 python 使选择最高数字更紧凑?
- swiftui - 更改(切换)传递对象的属性
- sql - SQL 查找子批次但不查找父批次的数量
- java - 当我单击其他片段中的搜索按钮时,应用程序崩溃
- sql - 为 DEFAULT SQL 获取 null
- jenkins - 如何将 SonarQube 分析的质量门检查到工作中
- arcore - 为什么三星 Galaxy A20e 与我的 Unity 应用程序不兼容?