[英]document not getting deleted in mongo using jwt token
代码任务:是使用 JWT 令牌从数据库中删除文档错误:发送 500 内部错误
Auth.js 代码
const auth=async(req,res,next)=>{
try{
const token=req.header('Authorization').replace('Bearer ','');
const decoded=jwt.verify(token,'helloworld');
const user=await User.findOne({_id:decoded._id,'tokens.token':token});
if(!user){
throw new Error();
}
// console.log(token);
req.token=token;
req.user=user;
next();
}
catch(err){
// console.log(token);
res.status(401).send({error:"please authenticate"});
}
}
module.exports=auth;
删除文档的代码(API 端点)
router.delete('/users/me',auth,async(req,res)=>{
try{
await req.user.remove();
res.status(201).send(req.user);
}
catch(err){
console.log(err);
console.log(req.user);
res.status(500).send();
}
})
问题是即使我发送了不正确的 JWT 令牌,它也应该给我{error : please authenticate}
但我也没有收到此错误,而是在发送正确的 JWT 时收到 500 内部错误和相同的错误。 即使我在控制台中打印错误,它也没有在控制台中显示错误
在您的 API 端点中,您必须调用您的集合名称,然后您需要使用查询/参数 ID 删除。
如果您像这样使用 mongoose 并从前端发送 id 作为查询/参数,
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
} else {
message.type = 'error';
}
});
或者
router.delete('/users/me/:id', auth, async(req,res) => {
try {
await Model.deleteOne({ _id: req.params.id})
res.status(201).send(req.user);
} catch(err) {
console.log(err);
res.status(500).send();
}
});
我希望如果你按照这种方式,你可以解决这个问题。
这是删除await req.user.remove();
因为,当代码执行时,它不知道需要删除哪个数据集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.