J'ai suivi this tutoriel et créé une application avec frontend/backend côté en angulaire. Je veux communiquer avec json via des appels de repos au backend. L'interface et le backend fonctionnent et je suis capable d'appeler les méthodes du backend. Sur le frontend, j'envoie un objet hero à backend mais du côté backend, l'objet body.hero est indéfini.npm express impossible d'obtenir l'objet de la demande en backend
frontend:
update(hero: Hero): Promise<Hero> {
const url = `${this.heroesUrl}/hero/update/${hero.id}`;
console.info('update url: '+url);
return this.http.put(url, JSON.stringify(hero), {headers: this.headers})
.toPromise()
.then(() => hero).catch(this.handleError);
}
back-end:
router.put('/heroes/hero/update/:id', (req, res) => {
let id = req.params.id; // 12
let z = req.body.params;
console.info("body: "+z);
let name = JSON.parse(req.body.hero).name;
console.info("saving hero: "+name+" with id: "+id);
client.query("update heroes set heroname=$2 where id_pk=$1)", [h, name]);
res.send(JSON.stringify("ok"));
});
exception:
body: [object Object]
SyntaxError: Unexpected token u in JSON at position 0
at Object.parse (native)
at router.put (C:\Users\Magamet\Documents\GitHub\angular-start-app\server\routes\api.js:64:19)
at Layer.handle [as handle_request] (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\ro
uter\layer.js:95:5)
at next (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\route.js:112:
3)
at Layer.handle [as handle_request] (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\ro
uter\layer.js:95:5)
at C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\index.js:281:22
at param (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\index.js:354:14)
at param (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\index.js:365:14)
at Function.process_params (C:\Users\Magamet\Documents\GitHub\angular-start-app\node_modules\express\lib\router\inde
x.js:410:3)
Qu'est-ce que je fais mal? Y a-t-il une meilleure façon d'envoyer l'obj hero à backend dans json? Comment pourrais-je lire l'objet héros du côté backend?
Merci
, mais il dit 'TypeError: Impossible de lire le « nom » propriété de undefined' – ninjaxelite
exigez-vous que le corps-analyseur? – Josherwoodev
Je n'étais pas mais j'ai ajouté ceci: 'const bodyParser = require ('body-parser') const app = express() app.use (bodyParser.urlencoded ({étendu: false})) app.use (bodyParser.json()) 'mais cela ne fonctionne toujours pas la même erreur qu'avant – ninjaxelite