Node.js 在express中,如果数据库连接失败,是否显示错误?
在我的node express服务器中,如果无法访问数据库以运行sql查询,我想抛出一个错误。但是它不起作用Node.js 在express中,如果数据库连接失败,是否显示错误?,node.js,express,Node.js,Express,在我的node express服务器中,如果无法访问数据库以运行sql查询,我想抛出一个错误。但是它不起作用 const findUserByEmail = (email, cb) => { return mc.query('SELECT * FROM user_login WHERE email = ?',[email], (err, row) => { cb(err, row); }); } 当我在路由上运行curl测试时,我得到的不是错误,
const findUserByEmail = (email, cb) => {
return mc.query('SELECT * FROM user_login WHERE email = ?',[email], (err, row) => {
cb(err, row);
});
}
当我在路由上运行curl测试时,我得到的不是错误,而是:
{"message": "Internal server error"}
您可以在index.js中使用它
import router from './routes';
const app = express();
app.use(router);
app.use((err, req, res, next) => {
// eslint-disable-line no-unused-vars
return res.status(err.status || 500).json({
error: {
message: err.message,
error: {},
},
status: false,
});
});
根据讨论,您应该在db连接文件中执行此操作
// connect to database
db.connect((err) => {
if (err) {
throw err;
}
console.log('Connected to database');
});
不确定捕获端点中的内部服务器错误是否有意义。您应该在index.js中将其作为一般性错误捕获,这可能意味着无法访问您想要的数据库。这不是端点的问题,而是应用程序的问题。在路由之前,我如何捕获错误?在启动
服务器时,您是否打开了到SQL的连接?我正在这样做:const mc=mysql.createConnection({host:process.env.dbhost,user:process.env.dbuser,password:process.env.dbpassword,database:process.env.dbdatabase,port:process.env.dbport});
您是执行mc.connect()
还是不执行?我希望路由中出现更多错误,这样我就可以判断数据库是否已关闭。我尝试了这个操作,但仍然收到{“消息”:“Internal server error”}
请参见编辑。您必须在索引中的express app中初始化路由器。这是在我的路由之前还是之后?在您的路由器之后。将其放在路由器之后,仍然会引发相同的错误。这可能是正确的错误,但我希望在无法连接到数据库时使用自定义错误。(见上文原邮政路线)
// connect to database
db.connect((err) => {
if (err) {
throw err;
}
console.log('Connected to database');
});