I khow like a common question here on. But I couldn't get a solution from everywhere. here is my code: if row is not empty then render code page, otherwise perform another action.
app.get('/send',function(req,res){
var code=req.query['c']; // -- get request from input
connection.query("use mynum");
var strQuery = "select * from table WHERE code='"+code+"' LIMIT 1";
connection.query( strQuery, function(err, rows){
if(err) {
throw err;
}else{
if(rows.length==1){
res.render('pages/code', {code : rows[0].code});
connection.end();
res.end();
}else {
// here is some actions
}
}
});
res.end();
});
the stack trace:
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:690:11)
at ServerResponse.header (C:\wamp\www\vin_number\node_modules\express\lib\re
sponse.js:666:10)
at ServerResponse.res.contentType.res.type (C:\wamp\www\vin_number\node_modu
les\express\lib\response.js:532:15)
at ServerResponse.send (C:\wamp\www\vin_number\node_modules\express\lib\resp
onse.js:121:14)
at fn (C:\wamp\www\vin_number\node_modules\express\lib\response.js:900:10)
at View.exports.renderFile [as engine] (C:\wamp\www\vin_number\node_modules\
ejs\lib\ejs.js:323:3)
at View.render (C:\wamp\www\vin_number\node_modules\express\lib\view.js:93:8
)
at EventEmitter.app.render (C:\wamp\www\vin_number\node_modules\express\lib\
application.js:530:10)
at ServerResponse.res.render (C:\wamp\www\vin_number\node_modules\express\li
b\response.js:904:7)
at Query._callback (C:\wamp\www\vin_number\server.js:102:6)
You're sending a response twice via res.end()
. Get rid of the second one and you should be fine. Also, calling res.end()
after res.render()
is redundant since res.render()
automatically ends the response with the rendered result by default.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With