如何解决如果发生pg错误,express服务器将关闭
我有一个附加到pg数据库的Express应用程序。我正在处理错误。我希望将pg错误消息发送到前端,以便用户知道为什么此表单未发送。现在,如果我向该端点发送违反数据库约束的信息,则会关闭服务器。
我认为这与我处理错误的方式有关,但是我是新来表达的人,对如何解决这个问题有些困惑。
这是我的代码: 快速路线:
app.post('/api/inbox',inbox.createInbox)
createInbox函数:
const createInbox = (request,response) => {
const { name,email,body,tag,subject } = request.body
console.log("request body",request.body)
pool.query('INSERT INTO inbox (name,subject ) VALUES ($1,$2,$3,$4,$5)',[name,subject ],(error,results) => {
if (error) {
return console.error(err.message);
}
console.log("get to Success contact")
response.status(200).send(`Inbox Added`)
})
}
解决方法
仅供参考,您的服务器可能正在关闭,因为您在err.message
中引用了console.error(err.message)
,但是变量名是error
,而不是err
。
您还需要将错误响应发送回客户端。服务器收到的每个http请求都需要发送某种类型的响应:
const createInbox = (request,response) => {
const { name,email,body,tag,subject } = request.body
console.log("request body",request.body)
pool.query('INSERT INTO inbox (name,subject ) VALUES ($1,$2,$3,$4,$5)',[name,subject ],(error,results) => {
if (error) {
console.error(error.message); // log correct variable
response.status(500).send(error.message); // send error response
return;
}
console.log("get to Success contact")
response.status(200).send(`Inbox Added`)
})
}
,
您的服务器正在关闭,因为您的回调函数引用的是error
而不是err
。
尝试以下代码:
const createInbox = (request,response) => {
const { name,subject } = request.body
console.log("request body",request.body)
pool.query('INSERT INTO inbox (name,(err,results) => {
if (err) {
return console.error(err.message);
} else
console.log("get to Success contact")
response.status(200).send(`Inbox Added`)
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。