2

expressjs を使っているのですが、 streamlinejsでの使い方がわかりません。

エクスプレスコードを見てください:

var app = express.createServer();

app.get('/', function(req,res) {
   User.find({name:'Jack'}, function(err, users) {
      res.send(users);
   });
});

コードでstreamlinejsを使用するには?

4

2 に答える 2

2

これは、よくある質問 (https://github.com/Sage/streamlinejs/blob/master/FAQ.md#the-underscore-trick-is-designed-for-callbacks-but-not- events-how-do-i-deal-with-events)。

最も簡単な解決策は、アンダースコアを追加のパラメーターとしてgetコールバックに追加することです。

app.get('/', function(req,res, next, _) {
   var users = User.find({name:'Jack'}, _);
   res.send(users);
});

connect唯一の問題は、いつかそのコールバックに 4 番目のパラメーターを追加する場合です。connect以下は少し安全です (ただし、コールバック API を変更する理由がわからないため、おそらくやり過ぎです)。

app.get('/', function(req,res) {
   (function(_) {
      var users = User.find({name:'Jack'}, _);
      res.send(users);
   })(trap); // trap is a generic callback that handles errors
});
于 2012-05-22T09:31:00.763 に答える
1

The Thingdomには Express と Streamline を使用します。そのために、nextコールバック (3 番目のパラメーター) をルート ハンドラーとミドルウェア ハンドラーの両方で Streamline に適したコールバックにする単純なラッパーを作成しました。

どうぞ:

https://gist.github.com/1087991

=)

私はそれを汎用モジュールにして npm に公開するつもりでした。すぐにそうするつもりです。 編集: https://github.com/aseemk/express-streamline

この結果、トレードオフが 1 つあります。ルート ハンドラを他のルート ハンドラに「継続」(フォール スルー) させることはできません。ただし、その機能を使用したことはありませんし、使用することも想定していません。すべてのルート ハンドラーが最終目的地であることがわかっている方がはるかに簡単です。したがって、そのトレードオフは問題ありませんでした。

編集:これは Express 2.x でのみテストされています。

于 2012-05-23T19:04:49.523 に答える