当我创建Contact类型的对象(这是MongoDB模式的模型)时,它会引发一些奇怪的错误,如下所示。我使用Joi的目的是用于客户端验证(也称为传入请求)。
这里auth是一个中间件,它正在验证jwt并从jwt中获取id。
它显示出奇怪的错误,例如-**“ $ __”是不允许的。不允许使用“ isNew”。不允许“错误”。不允许使用“ _doc”。不允许使用“ $ locals”。不允许使用“ $ op” **
router.post('/',auth,async (req,res)=>{
try{
// console.log(`contact - ${JSON.stringify(req.body)}`);
let contact = new Contact({
firstName : req.body.firstName,
lastName : req.body.lastName,
email : req.body.email,
address : req.body.address,
country : req.body.country,
isBookMark : req.body.isBookMark,
});
// console.log(`before contact - ${JSON.stringify(contact)}`);
// // contact = {...req.body};
// console.log(`before after - ${JSON.stringify(contact)}`);
contact.userID=req.user.id;
// ?console.log(`contact - ${(contact)}`);
const {error} = validateContact(contact);
console.log(`ERROR - ${error}`);
}
catch(error){
console.log(`contacts - ${error.message}`);
}
答案 0 :(得分:1)
问题是您试图验证具有其内部属性的猫鼬模式类。那就是您在错误中看到的内容。您在这里有两个选择
将req.body
传递给您的validate函数,而不是传递联系人对象。
或从联系人架构中提取属性,然后将该对象传递以验证功能。
希望有帮助。