Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node express-验证删除条目的用户是否是创建该条目的人_Javascript_Node.js_Express - Fatal编程技术网

Javascript node express-验证删除条目的用户是否是创建该条目的人

Javascript node express-验证删除条目的用户是否是创建该条目的人,javascript,node.js,express,Javascript,Node.js,Express,我是一个20年以上的网络编程新手,但试着做这件事是为了学习,所以请温柔一点:-)。这是我第一次请求帮助 我正在使用express后端创建一个节点js,并使用VUE 3作为前端。我有用户身份验证设置,可以按我的意愿工作 我现在尝试添加一个简单的post功能。用户可以创建帖子并查看其他用户的帖子。管理员用户可以删除所有帖子,但普通用户无法通过我试图设置的检查删除自己的帖子 岗位控制员 function _delete(req, res, next) { postService.getPost

我是一个20年以上的网络编程新手,但试着做这件事是为了学习,所以请温柔一点:-)。这是我第一次请求帮助

我正在使用express后端创建一个节点js,并使用VUE 3作为前端。我有用户身份验证设置,可以按我的意愿工作

我现在尝试添加一个简单的post功能。用户可以创建帖子并查看其他用户的帖子。管理员用户可以删除所有帖子,但普通用户无法通过我试图设置的检查删除自己的帖子

岗位控制员

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'});}这对我来说更有意义,也更容易阅读以前的内容。