2016-11-11 18 views
0

リクエストをユーティリティクラスに渡すノードサーバーをセットアップしました。 これまでのところ、POST要求はヒットしましたが、bodyプロパティ値へのマッピングは未定義です。 Bodyparserは、Json解析を支援するpostメソッドでも使用されます。エクスプレスサーバーのリクエスト本文からJSONプロパティを解析するにはどうすればよいですか?

Iは、要求に段差と本体は人口であることを確認し、ペーストに示すように、プロパティ名が正しいことを確認:req.body.propertyname介しassinged値に

body: { '{\n\t"Email":"[email protected]",\n\t"Dashboard_Name":"my dash 4",\n\t''},

しかしマッピング以下undefinedを返す:

var p_email = req.body.Email; 
var p_dashboardName = req.body.Dashboard_Name; 

質問:

エクスプレスサーバーのリクエスト本文からJSONプロパティを解析するにはどうすればよいですか?

JSONオブジェクトが掲示される:

これは私がポストマンを使用してサーバに投稿JSONである:エクスプレスサーバと関連するユーティリティメソッドSaveUserProfileの

{ 
    "Email":"[email protected]", 
    "Dashboard_Name":"my dash 4" 

} 

要旨

エクスプレスサーバー -

var express  = require('express'); 
var UserLDAP = require('./utilities/UserLDAP'); //utility file containing the POST method 
var bodyParser = require('body-parser'); 


const url  = require('url'); 
const app  = express(); 
var sql   = require('mssql'); 
const cors  = require('cors'); 
const path  = require('path'); 


sql.connect("********************************************************************") 
.then((connection1) => { 

    sql.globalConnection = connection1; 

    app.use(cors()); 

    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: true })); 


    app.post('/OOO/SaveUserProfile', UserLDAP.SaveUserProfile) 


    app.listen(process.env.PORT || 4000); 
    logger.info(`listening to port ${process.env.PORT}`); 
}).catch((err) => { 
    res.status(500).send(err.message); 
    logger.error(err.message); 
}); 

UserLDAP.js -

var sql = require('mssql'); 
var bodyParser = require('body-parser'); 




//Save User Profile 

     exports.SaveUserProfile = function(req, res) { 


     req.app.use(bodyParser.json()); 
     req.app.use(bodyParser.urlencoded({ extended: true })); 

     var request = new sql.Request(sql.globalConnection); 

     console.log(req); 

     var p_email = req.body.Email; 
     var p_dashboardName = req.body.Dashboard_Name; 


    }; 
+1

どのExpressのバージョンを使用していますか? – Kalman

+0

4.1最後に更新しました。 –

答えて

1

私は間違ったコンテンツタイプが掲示されているオブジェクトのPostmanに設定されていました。

application/json; charset=UTF-8 
-1

体-parser.jsonのようなパーサはコンテンツを与え開始する明白な場所があると思われるエラーが、結果のISNを生産している場合は、現在あなたが知る方法はありません't。

私はbody-parserを見て、わかっていると期待されるjsonエラーを検出するという問題に触れたissueが見つかりました。

開発者は、1つの方法として次のように提案しました。

app.use(errorFork(bodyParser.json(), 
function (err, req, res, next) { 
    // do stuff with only body parser errors 
})) 

// this is an example; you can use any pattern you like. 
function errorFork(middleware, errorHandler) { 
    middleware(req, res, function (err) { 
     if (err) { 
      return errorHandler(err, req, res, next) 
     }else{ 
      return next() 
     } 
    }) 
} 

これは修正されていませんが、詳細がわかります。あなたはquestinが何であるかを示して何かが間違っていますか?あなたのペーストされたボディのコンテンツについて気づいたもう一つのことは、有効なjson(ignoring \ n \ t)であり、そこにいくつかの口紅'があり、チェックする価値があるということです。本文にあるもの(生の)をコピーして、ダブルチェックと同様にjsonlint.comのようなjsonバリデーターサイトに入れ、body-parserがエラーを返すかどうかを確認してください。

関連する問題