2017-01-02 11 views
0

Expressでは、私はPOST要求をスキャンし、配列openingTimesを作成しようとしています。入力に基づいてMongoDBドキュメントを作成します。要求オブジェクト内の文字列を反復処理する方法は?

コードスニペットはうまくいきますが、n日を定義する代わりにループを作るにはどうすればよいですか?

`module.exports.myController = function (request, response) { 
    MongoDBModel.create({ 
     name: req.body.name, 
//I want to make a loop in here, so I dont have to define each day separately 
     openingTimes: [{ 
      days: req.body.days1 
      , opening: req.body.opening1 
      , closing: req.body.closing1 
      , closed: req.body.closed1 
    }, { 
      days: req.body.days2 
      , opening: req.body.opening2 
      , closing: req.body.closing2 
      , closed: req.body.closed2 
    }] 
// catching errors 
    }, function (err, location) { 
     if (err) { 
      sendJsonResponse(res, 400, err); 
      console.log("error is " + err); 
     } 
     else { 
      sendJsonResponse(res, 201, location); 
     } 
    }); 
};` 
+0

'openingTimes'配列には常に正確に2つのオブジェクトがありますか? – Hydrothermal

+0

レスポンスのプロパティは、「opening1、opening2」と正確に名前が付けられていますか? – Saravana

+0

@Hydrothermal配列内には任意の数のオブジェクトを配置できます。実際、柔軟性を保つためにループを作りたいと思います。 – Ali

答えて

1

事前に(または配列を返すIIFEでインラインで)配列を作成することができます。

またはES6を使用すると、創造的でジェネレータ機能を備えたIIFEを作成できます。

const numDays = 7; 
MongoDBModel.create({ 
    name: req.body.name, 
    openingTimes: [...function*() { 
     for (let i = 1; i <= numDays; i++) { 
      yield { 
       days: reg.body['days' + i], 
       opening: req.body['opening' + i], 
       closing: req.body['closing' + i], 
       closed: req.body['closed' + i] 
      }; 
     } 
    }()] 
}, etc); 
+0

私は最初の答えを試しましたが、大きな問題があります:ユーザーは7日間を指定する必要があります。しかし、私が欲しいのは、柔軟性があることです。ユーザーが3日を入力すると、関数は3日間だけ質問し、次にopeningTimes配列に3日を入れます。 ユーザが2日置くと、fucntionは2日間だけ質問し、openingTimes配列は2つのオブジェクトしか持たないでしょう。 – Ali

+0

どちらの解決方法でも番号7の代わりに変数を使用できます。 – 4castle

+0

とその変数を正しく動作するように定義する方法はありますか?私がランダム変数を入れただけでは、正しく動作するとは思っていませんか? – Ali

関連する問題