私はのチュートリアルに続き、フロントエンド/バックエンド側に角度の付いたアプリケーションを作成しました。npmはバックエンドで要求からオブジェクトを取得できません
バックエンドへの残りの呼び出しによってjsonと通信したいと思います。フロントエンドとバックエンドが動作しており、バックエンドからメソッドを呼び出すことができます。
フロントエンド側で私はヒーローオブジェクトをバックエンドに送信していますが、バックエンド側ではbody.heroオブジェクトは定義されていません。
フロントエンド:
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);
}
バックエンド:
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"));
});
例外:私は間違って
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)
をしていますか? jsonでヒーローobjをバックエンドに送るより良い方法はありますか?バックエンド側のヒーローオブジェクトをどうすれば読むことができますか?
はありがとう
をしかし、それは 'TypeError例外は言う:undefined' – ninjaxelite
のプロパティ「name」を読み取ることができませんあなたは身体-パーサを必要としていますか? – Josherwoodev
私はそうではありませんでしたが、これを追加しました: 'const bodyParser = require( 'body-parser') const app = express() app.use(bodyParser.urlencoded({extended:false})) app.use (bodyParser.json()) 'を実行しても、以前と同じエラーが発生しません – ninjaxelite