1

クエリ パラメータを Mongoose クエリに渡す RESTful URL を作成するための高速ルートを作成したいと考えています。このような (動作しない) コードは、URL から limit および sort パラメーターをマッピングし、それ以外の場合はデフォルトを使用します。URL は次のようになります。

myhost/processes?limit=20&sort=-modified

exports.find = function(req, res) {

var options = {
    limit : 100,
    sort: '-created'
};

_(options).extend(req.query);

Process.find(options, function(err, process) {
    res.send(process);
});

}

クエリ パラメータを find() や sort() などの個々のメソッドに渡す方法しか知らないので、これをより自動化してマップする方法はありません。または、RESTful api に関して私がやろうとしていることは悪い考えですか? 私は Mongoose を使用していますが、それが役立つ場合は、ネイティブ ドライバーを使用したソリューションに興味があります。

4

1 に答える 1

1

アンダースコア ライブラリを使用していると仮定すると、次のextendように実行できます。

exports.find = function(req, res) {

  var options = {
    limit : 100,
    sort: {created: -1}
  };
  _.extend(options, req.query);

  Process.find({}, null, options, function(err, process) {
    res.send(process);
  });
}

optionsパラメーターはQuery#setOptionsメソッドに渡され、オプションの多くは node.js ネイティブ ドライバーに直接渡されます。そのため、sortネイティブfindドキュメントを参照してください。ご覧のとおり、 の形式はsortURL パラメーターで提供するのに適していません。

req.queryを使用するよりも、特定のオプションのサポートのみを公開してから個別にプルする方が安全ですextendが、どちらの方法でも機能します。

于 2013-02-25T19:26:08.887 に答える