Nikul Panchal
Nikul Panchal

Reputation: 1673

getting error : Can't set headers after they are sent

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

Answers (1)

Subburaj
Subburaj

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

Related Questions