如何解决无法使用 Node-PG pool.query 获得正确的错误
我是一个完全的初学者,试图使用 PERN 堆栈制作社交媒体网站,但在使用 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)
}}
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 运算符有些问题……非常感谢您的任何见解!
解决方法
继续在这里回答我自己的问题:
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 并在适当时抛出错误...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。