2017-02-17 8 views
0

私は、その機能を提供するためにいくつかのデータ(car.name)を渡す必要のあるルートハンドラを持っています。API呼び出しで欠落しているデータを処理する

carRouter.route('/create') 
    .post(carController.create) 

function create(req, res, next) { 
    const carInstance = new carModel({ 
    activated: false, 
    name: body.car.name, 

body.car.nameがない場合、急なクラッシュが発生します。

私は、次のチェックを追加することでこれを扱うことができます:

if (body.car.name) { 
    function create(req, res, next) { 

をしかし、それはすぐにモデルのプロパティの数が多いと面倒になります。

CarSchema自体に検証設定が既にありますので、検証にmongooseを委任し、要求にデータがない場合はアプリケーションがクラッシュするのを避けたいと思います。

私はgithubでいくつかの実際の例を見て、これがどのように処理されているかを調べ、混在した結果を得ました。

この基本的な状況を適切に処理する方法は何ですか?

+0

、あなたはAPI呼び出しの結果がする何をしたいですか:あなたはおよそnameundefinedことを気にしない場合は、

name: body.car ? body.car.name : null 

をまたは:多分これは役立ちますか? – jfriend00

+0

@ jfriend00返信したい40 * – softcode

答えて

2

TypeError非オブジェクトの特性を読み取るためにスローされますか?データが欠落している場合

name: body.car && body.car.name 
+0

'body.car'は存在しますが、' body.car.name'は存在しません。 – softcode

+0

存在しないプロパティの問い合わせはJSですが、存在しないオブジェクトのプロパティのクエリは行いません。 'body.car.name'は単に' undefined'を評価します。 – pttsky

+0

'body'は常に存在するでしょうか? – softcode

関連する問題