Joi在验证猫鼬对象时抛出错误-

时间:2020-03-01 20:30:50

标签: javascript node.js mongodb express

当我创建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}`);
}

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是您试图验证具有其内部属性的猫鼬模式类。那就是您在错误中看到的内容。您在这里有两个选择

  • req.body传递给您的validate函数,而不是传递联系人对象。

  • 或从联系人架构中提取属性,然后将该对象传递以验证功能。

希望有帮助。