如何通过 Restful 对 Mongoose 请求进行用户验证

Posted

技术标签:

【中文标题】如何通过 Restful 对 Mongoose 请求进行用户验证【英文标题】:How to do user validation on a Mongoose request through Restful 【发布时间】:2021-07-09 02:44:02 【问题描述】:

所以我想首先找到用户想要删除的评论,然后检查用户名是否匹配以验证用户是否有权执行此操作(我知道用户名不是最安全的方法,这仅适用于测试版)。

这就是我现在拥有的

// Deleting One
router.delete('/delete/:id', (req, res) => 
  const voter = req.body.voter;
  const id = req.params.id;
  var sendContent = ;
  Comments.findById(_id: id, (error, result) => 
    console.log(`$voter and $result.user`)
    if(voter !== result.user) 
      sendContent.msg = 'You can\'t delete someone else\'s Comment';
      sendContent.code = 500;
      res.send(sendContent);
     else 
      sendContent.msg = 'Currently in Test Mode but this is where the comment would be deleted';
      sendContent.code = 500;
      res.send(sendContent);
    
    result.save()
  )
)

是否有 result.delete() 函数或其他东西?可能是一个愚蠢的问题,但在此先感谢。

【问题讨论】:

这能回答你的问题吗? How do I remove documents using Node.js Mongoose? 【参考方案1】:

不,您需要使用remove 或其他一些删除/查找和删除功能。

// Deleting One
router.delete('/delete/:id', (req, res) => 
  const voter = req.body.voter;
  const id = req.params.id;
  var sendContent = ;
  Comments.findById(_id: id, (error, result) => 
    console.log(`$voter and $result.user`)
    if(voter !== result.user) 
      sendContent.msg = 'You can\'t delete someone else\'s Comment';
      sendContent.code = 500;
      res.send(sendContent);
     else 
      sendContent.msg = 'Currently in Test Mode but this is where the comment would be deleted';
      sendContent.code = 500;
      Comments.remove(_id: id, (err, deleted) =>
        !err && console.log('comment deleted')
        res.send(sendContent)
      );
    
  )
)

【讨论】:

以上是关于如何通过 Restful 对 Mongoose 请求进行用户验证的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Mongoose 查询对嵌入文档数组进行排序?

如何响应 RESTful Web 服务中的备用 URI

如何创建一个包含另一个集合的 ObjectId 数组的文档(最佳实践,RESTful)?

如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?

如何通过查询字符串轻松实现连接

nodejs + mongodb 编写 restful 风格博客 api