簡體   English   中英

無法使用 Node-PG pool.query 獲得正確的錯誤

[英]unable to get correct error with Node-PG pool.query

我是一個嘗試使用 PRN 堆棧制作社交媒體網站的初學者,我在使用 Postman 進行調試時遇到了刪除請求的問題。 基本上,我以用戶 X 的身份登錄,創建了一個帖子,注銷,然后以用戶 Y 的身份登錄並嘗試刪除該帖子。 發生的情況是,我得到了Post deleted with ID: ${post_id}但是,當我 go 檢查數據庫時,帖子仍然存在。 盡管這是我在功能上希望它做的事情,但我希望拋出正確的錯誤。 我錯過了什么?

  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 運算符有些問題……非常感謝任何見解!

將 go 提前並在這里回答我自己的問題:

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 並在適當的時候拋出一個錯誤......

我目前遇到同樣的問題,如果這是在 mysql 和 php 中我會做的

mysqli_query($db, "DELETE FROM post where id = $id and post_id = $post_id LIMIT 1") or die(mysqli_error($database_connection))

但我找不到 pg-node 的類似模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM