NodeJs,Mongoose:在更新之前检查auth的最佳方法是什么?

时间:2016-01-21 06:22:16

标签: node.js mongodb mongoose

我想检查登录用户(req.user)是否是在更新数据之前发布帖子的同一个人(post.author,它是ObjectId引用用户)。 我已经将路由限制在更新表单中,但我会仔细检查以防万一。

此代码正常运行,但我想知道是否有更简单或更好的方法来执行此操作。

app.put('/posts/:id', isLoggedIn, function(req,res){
  Post.findById(req.params.id, function (err,post) {
    if(!req.user._id.equals(post.author)) return res.json({success:false, message:"Unauthrized Attempt"});
    Post.findByIdAndUpdate(req.params.id, req.body.post, function (err,post) {
      res.redirect('/posts/'+req.params.id);
    });
  });
});

1 个答案:

答案 0 :(得分:0)

我找到了更好的方法。

app.put('/posts/:id', isLoggedIn, function(req,res){
  Post.findOneAndUpdate({_id:req.params.id,author:req.user._id}, req.body.post, function (err,post) {
    res.redirect('/posts/'+req.params.id);
  });
});