node.js - mongodb update is throwing a critical error -
when try update user using web form, runs app.post on express. object user correct, throws error in node console
app.post('/register/update', jsonparser, (request, response) => { let user = request.body.user; let users = mongoutil.users(); console.log(user); users.update({email: user.email}, user, (err, res) => { if(err) { response.sendstatus(400); } response.sendstatus(201); }); });
in node console:
{ _id: '578246ec9eb0587a5d67b8c9', email: 'test@test.com', zipcode: '1231-123', companyname: 'test', tradename: 'test', contactname: 'test', tel: '(14) 1232-1231', password: 'test', passwordconfirm: 'test', adress: 'test', adresscomplement: 'test', adressnumber: '123' } /home/ec2-user/ ... /mongodb/lib/utils.js:98 process.nexttick(function() { throw err; }); ^ error: can't set headers after sent. @ serverresponse.outgoingmessage.setheader (_http_outgoing.js:346:11) @ serverresponse.header (/home/ec2-user/ ... /node_modules/express/lib/response.js:719:10) @ serverresponse.contenttype (/home/ec2-user/ ... /node_modules/express/lib/response.js:552:15) @ serverresponse.sendstatus (/home/ec2-user/ .. /node_modules/express/lib/response.js:340:8) @ users.update (/home/ec2-user/menuwebapp/server/app.js:94:14) @ handlecallback (/home/ec2-user/ ... /node_modules/mongodb/lib/utils.js:96:12) @ /home/ec2-user/ ... /node_modules/mongodb/lib/collection.js:1008:42 @ commandcallback (/home/ec2-user/ ... /node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:1194:9) @ callbacks.emit (/home/ec2-user/ ... /node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:119:3) @ connection.messagehandler (/home/ec2-user/ ... /node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:358:23)
i'm dealing callback problem, don't have idea how solve d:
the error not coming update statement coming callback function.
specifically these lines of code.
if(err) { response.sendstatus(400); } response.sendstatus(201);
what doing if there error send status 400, send status 201. problem once send response headers requestor can't try , set headers again.
so code should change to:
if(err) { response.sendstatus(400); }else{ response.sendstatus(201); }
so if error generated send 400 response otherwise send 201 response instead of trying send 400 response , 201 response after.
Comments
Post a Comment