node.js - Passing json data using angular services -
i have been trying post data node api using angular2 services via json request .however node api receiving undefined
value when pass parameters thorough angular2 services . below here angular service code
enrolldegree(name,depart,enrollnumber,cgpa,university,token){ let peer = '["localhost:10151","localhost:10351"]'; let fcn = 'initdegree'; let argument = '["'+name+'","'+depart+'","'+enrollnumber+'","'+cgpa+'","'+university+']'; let headers = new headers({'cache-control':'no-cache', 'content-type': 'application/json', 'authorization':'bearer '+token}); let options = new requestoptions({ headers: headers }); let body1 = new urlsearchparams(); body1.set('peers','["localhost:10151","localhost:10351"]'); body1.set('fcn',fcn); body1.set('args',argument); let body = json.stringify(body1); console.log('server logs',body); return this.http.post('http://localhost:4000/channels/mychannel/chaincodes/mycc', body, options ) .map((res: response) => res.json()) .catch((error:any) => observable.throw(error.json().error || 'server error shit bang in')); }
here node api code
app.post('/channels/:channelname/chaincodes/:chaincodename', function(req, res) { logger.debug('==================== invoke on chaincode =================='); var peers = req.body.peers; var chaincodename = req.params.chaincodename; var channelname = req.params.channelname; var fcn = req.body.fcn; var args = req.body.args; logger.debug('channelname : ' + channelname); logger.debug('chaincodename : ' + chaincodename); logger.debug('fcn : ' + fcn); logger.debug('args : ' + args); if (!peers || peers.length == 0) { res.json(geterrormessage('\'peers\'')); return; } if (!chaincodename) { res.json(geterrormessage('\'chaincodename\'')); return; } if (!channelname) { res.json(geterrormessage('\'channelname\'')); return; } if (!fcn) { res.json(geterrormessage('\'fcn\'')); return; } if (!args) { res.json(geterrormessage('\'args\'')); return; } invoke.invokechaincode(peers, channelname, chaincodename, fcn, args, req.username, req.orgname) .then(function(message) { res.send(message); }); });
when try post data using curl query , works fine me . curl query use in making post request
curl -s -x post \ http://localhost:4000/channels/mychannel/chaincodes/mycc \ -h "authorization: bearer $org1_token" \ -h "content-type: application/json" \ -d '{ "peers": ["localhost:7051", "localhost:8051"], "fcn":"initdegree", "args":["khurrum","software","ned11831314","3.5","ned"] }'
what doing wrong in angular2 services?
in angular service code, instead of creating request body urlsearchparams instance, try this:
let body1 = { peers: ["localhost:10151","localhost:10351"], fcn: fcn, args: argument } let body = json.stringify(body1);
Comments
Post a Comment