Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在express中,如果数据库连接失败,是否显示错误?_Node.js_Express - Fatal编程技术网

Node.js 在express中,如果数据库连接失败,是否显示错误?

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测试时,我得到的不是错误,

在我的node express服务器中,如果无法访问数据库以运行sql查询,我想抛出一个错误。但是它不起作用

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');
});