2017-07-12 17 views
0

私のサーバーにPOSTデータをリクエストするjavascriptコードです。ボディーデータをプリントアウトするとうまくいくようですが、Koaはリクエストから 'body'をパーズしません(koa-bodyparserを使用)。なぜこのようなことが起こるのか分かりません。それは1週間前のように文字通り働いていました。KoaはPOSTリクエストから 'body'を解析しません

ブラウザ

jQuery(document).ready(function($) { 
    $(".mypage_container .btn-block").click(async() => { 
     let payload = { 
      email: $('#username').val(), 
      password: $('#password').val(), 
      country: $('#CountriesDropDownList').val(), 
      firstname: $('#firstname').val(), 
      lastname: $('#lastname').val(), 
      gender: checkGender(), 
      address1: $('#address1').val(), 
      zipcode: $('#zipcode').val(), 
      mobile: $('#mobile').val(), 
      newsletter: newsLetter() 
     } 

     let option = { 
      method: "POST", 
      headers: { 
       'Content-Type': 'application/json' 
      }, 
      body: JSON.stringify(payload) 
     } 

     try { 
      let res = await fetch('/signup', option) 
     } catch (e) { 
      console.error("failed to send signup request", e) 
     } 
    }) 

}) 

あなたがポストされたデータ解析するco-bodyを使用する必要があるサーバー

router.post('/signup', async (ctx, next) => { 
    let data = ctx.request.body 

    console.log(ctx.request.body, ctx.request) // says undefined on first variable, request info without 'body' from the request. 
    try { 
     let user = new User(data) 
     await user.save() 
     ctx.body = data 
    } catch (e) { 
     console.error(e) 
    } 
}) 
+0

「koa-bodyparser」からの 'app.use(bodyParser())'呼び出しが 'app.use(router.routes())の上にあることを再確認してください。 – saadq

+0

@saadqこれは問題でしたありがとうございました! –

答えて

0

:これは動作するはず

const parse = require('co-body'); 

router.post('/signup', async (ctx, next) => { 
    let data = await parse(ctx); 
    console.log(data); 
    try { 
     let user = new User(data) 
     await user.save() 
     ctx.body = data 
    } catch (e) { 
     console.error(e) 
    } 
}) 

を...

関連する問題