0

我是一个尝试使用 PRN 堆栈制作社交媒体网站的初学者,我在使用 Postman 进行调试时遇到了删除请求的问题。基本上,我以用户 X 的身份登录,创建了一个帖子,注销,然后以用户 Y 的身份登录并尝试删除该帖子。Post deleted with ID: ${post_id} 然而,当我去检查数据库时,我得到了响应,帖子仍然存在。尽管这是我在功能上希望它做的事情,但我希望抛出正确的错误。我错过了什么?

  exports.deletePost = async (req, res) => {
 try {
  const userId = req.users
  const post_id = parseInt(req.params.id)
  await pool.query('DELETE FROM posts WHERE post_id = $1 AND user_id = $2', [post_id, userId])
  res.status(200).json(`Post deleted with ID: ${post_id}`)
 } catch (error) {
  console.log("Failed to delete post:" + error)
  res.sendStatus(500)
 }}

我从身份验证器中间件接收登录的用户 ID:

module.exports = async (req, res, next) => {
 try {
  const jwtToken = req.header('token')
  if (!jwtToken) {
   return res.status(403).json('You are not authorized')
  }
  const payload = jwt.verify(jwtToken, process.env.jwtSecret)
  req.users = payload.users
  next();
 } catch (error) {
  console.error(error.message)
  return res.status(403).json('You are not authorized')
 }
}

在我看来,我的 PG 请求中的逻辑 AND 运算符有些问题……非常感谢任何见解!

4

1 回答 1

0

将继续在这里回答我自己的问题:

exports.deletePost = async (req, res) => {
 try {
  const userId = req.users
  console.log('logged in user', userId);
  const post_id = parseInt(req.params.id)
  const resp = await pool.query('DELETE FROM posts WHERE post_id = $1 AND user_id = $2', [post_id, userId])
  if (resp.rowCount === 0) {
   throw new Error('Failed to delete post')
  }
  res.status(200).json(`Post deleted with ID: ${post_id}`)
 } catch (error) {
  console.error(error.message)
  res.status(500).send(error.message)
 }

我放入了一个 if 语句来检查 resp 的 rowCount 并在适当的时候抛出一个错误......

于 2021-03-10T17:57:38.873 回答