0

I am getting the following error

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:526:11) at ServerResponse.header (/Users/admin/Desktop/3100/a4/node_modules/express/lib/response.js:771:10) at ServerResponse.json (/Users/admin/Desktop/3100/a4/node_modules/express/lib/response.js:264:10) at ServerResponse.send (/Users/admin/Desktop/3100/a4/node_modules/express/lib/response.js:158:21) at Statement. (/Users/admin/Desktop/3100/a4/app.js:95:17) --> in Database#all('SELECT * FROM users WHERE julianday(?) <= julianday(time) AND julianday(time) <= julianday(?);', [ undefined, undefined ], [Function]) at /Users/admin/Desktop/3100/a4/app.js:90:12 at Layer.handle [as handle_request] (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) at next (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/route.js:137:13) at jsonParser (/Users/admin/Desktop/3100/a4/node_modules/body-parser/lib/types/json.js:119:7) at Layer.handle [as handle_request] (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) at next (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) at /Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:281:22 at param (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:354:14) at param (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:365:14) at param (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:365:14) at Function.process_params (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:410:3) at next (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:275:10) at serveStatic (/Users/admin/Desktop/3100/a4/node_modules/serve-static/index.js:75:16) { code: 'ERR_HTTP_HEADERS_SENT', __augmented: true }

**What I am trying to do is, send data. This is what I have done:

    db.all(
        `SELECT * FROM users WHERE julianday(?) <= julianday(time) AND julianday(time) <= julianday(?);`, [add1.start,add1.end],function(err,rows){

        if (!err){
        console.log("Directly inside rows is: ",rows);
        res.send(rows);
        }
        else{
           res.send(err);
        }
    });

  res.end();

**

1 Answers1

0

res.end on the last line is called synchronously after db.all returns, but before the data base query call back is called (asynchronously). When the db.all callback is called, the response has already been ended.

Proposed solution: remove the res.end() statement.

(As discussed in answers to this.question, res.send ends the response for you.)

traktor
  • 17,588
  • 4
  • 32
  • 53