2

私は Sails/Node の初心者ですが、Q ライブラリを使用してクエリを並行して実行しています。たとえば、結果を検索するコントローラー メソッドがありますが、応答オブジェクト内のレコードの総数も提供します。

search: function(req, res)
{
  //parse parameters      
  var where = req.param('where') || {};
  var limit = req.param('limit')|| 0;
  var skip = req.param('skip') || 0;

  //in case limit or skip are strings, convert to numbers
  if (limit) { limit = +limit; }
  if (skip) { skip = +skip; }

  //prepare query promises for total records and a limited result set
  var countPromise = User.count(where);
  var findPromise = User.find({
    limit: limit,
    skip: skip,
    sort: req.param('sort'),
    where: where
  });

  console.log('Searching Users: limit: '+limit+', skip: '+skip+', where:',where);

  //run asynchronous queries in parallel and
  //return composite JSON object on success
  Q.all([countPromise,findPromise])
    .spread(function(numRecords, matchingRecords){

      console.log(numRecords + " total users found, sending " + matchingRecords.length + " records starting from " + skip + ".");

      //package response
      var response = {};
      response.total = numRecords;
      response.users = matchingRecords || [];

      //send response
      return res.json(response);

    }).fail(function(err){

      //return server error
      return res.serverError(err);
    });
}

Waterline はその下で Q ライブラリを使用しますが、allメソッドを使用するにはコントローラーの上部で q ライブラリを要求する必要がありました。Q ライブラリをすべてのコントローラー/アプリ全体で利用できるようにする方法はありますか? それとも、それを必要とする各コントローラーの上部にrequireステートメントを含めるだけですか?

4

1 に答える 1