Javascript node express-验证删除条目的用户是否是创建该条目的人
我是一个20年以上的网络编程新手,但试着做这件事是为了学习,所以请温柔一点:-)。这是我第一次请求帮助 我正在使用express后端创建一个节点js,并使用VUE 3作为前端。我有用户身份验证设置,可以按我的意愿工作 我现在尝试添加一个简单的post功能。用户可以创建帖子并查看其他用户的帖子。管理员用户可以删除所有帖子,但普通用户无法通过我试图设置的检查删除自己的帖子 岗位控制员Javascript node express-验证删除条目的用户是否是创建该条目的人,javascript,node.js,express,Javascript,Node.js,Express,我是一个20年以上的网络编程新手,但试着做这件事是为了学习,所以请温柔一点:-)。这是我第一次请求帮助 我正在使用express后端创建一个节点js,并使用VUE 3作为前端。我有用户身份验证设置,可以按我的意愿工作 我现在尝试添加一个简单的post功能。用户可以创建帖子并查看其他用户的帖子。管理员用户可以删除所有帖子,但普通用户无法通过我试图设置的检查删除自己的帖子 岗位控制员 function _delete(req, res, next) { postService.getPost
function _delete(req, res, next) {
postService.getPost(req.params.id)
.then(...post)
.catch(next);
if (Number(post)(post.accountId) !== req.user.id && req.user.role !== Role.Admin) {
return res.status(401).json({ message: 'Unauthorized' });
}
postService.delete(req.params.id)
.then(() => res.json({ message: 'Post deleted successfully' }))
.catch(next);
邮政服务
async function _delete(id) {
const post = await getPost(id);
await post.destroy();
}
async function getPost(id) {
const post = await db.Post.findByPk(id);
if (!post) throw 'Post not found';
return post;
}
我遇到的困难是试图从getPost函数中获取返回“post”,并在delete函数的if语句中使用它
如果能得到一些帮助,我将不胜感激
非常感谢
史蒂夫什么是
。那么(…post)
应该怎么做?你需要一个像。然后(post=>{…})
这样的函数,在省略号的地方放一些像if(Number(post.accountId)!==req.user.id…
Chris非常感谢你的工作,我花了好几天的时间试图让它工作。异步代码就是这样工作的;异步函数返回一个承诺,然后通过另一个函数对其调用.then()
。当Promise解析时,它调用该函数,将解析结果作为第一个参数传递。请注意,如果将\u delete
函数设置为异步,则可以执行const post=wait postService.getPost(req.params.id)代码>取而代之。但是,在这种情况下,捕捉错误需要一个try-catch块。谢谢Chris,我只需要重新阅读你的帖子10次,它就可以理解了。我已经把代码换成了这个,它仍然有效。我不确定这比使用then语句有什么好处?异步函数{u delete(req,res,next){const post=wait postService.getPost(req.params.id)if(Number(post.accountId)!==req.user.id&&req.user.role!==role.Admin){return res.status(401.json({message:'Unauthorized'});}这对我来说更有意义,也更容易阅读以前的内容。