Reputation: 1673
I want to check if database is connected or not in my express js api, but it gives me error Can't set headers after they are sent.
, can anyone please help me why i am getting this error, here i have added my full code, can anyone please look in that and help me to resolve this issue,
dbconnection.db :
{
username: process.env.DB_USERNAME || '****',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_DATABASE || '*****',
host: process.env.DB_HOST || 'localhost',
dialect: process.env.DB_DIALECT || 'mysql',
logging: false,
}
API :
router.post('/', async (req, res) => {
try {
let connection = mysql.createConnection(dbconnection.db);
connection.connect(function(err) {
if (err) {
res.statusCode = 500;
return res.send(err.message).end();
}
});
res.statusCode = 200;
return res.send('OK').end();
} catch (error) {
res.statusCode = 500;
return res.send(error).end();
}
});
Upvotes: 0
Views: 25
Reputation: 5192
Should send success response inside the callback as follows:
router.post('/', async (req, res) => {
try {
let connection = mysql.createConnection(dbconnection.db);
connection.connect(function(err) {
if (err) {
res.statusCode = 500;
return res.send(err.message).end();
} else {
res.statusCode = 200;
return res.send('OK').end();
});
} catch (error) {
res.statusCode = 500;
return res.send(error).end();
}
});
Upvotes: 1