如何在expressjs中使用streamlinejs?

时间:2012-05-22 09:12:08

标签: node.js express

当我使用expressjs时,我不知道如何使用streamlinejs

查看快递代码:

var app = express.createServer();

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

如何在代码中使用streamlinejs?

2 个答案:

答案 0 :(得分:2)

这是我在FAQ中快速介绍的一点(https://github.com/Sage/streamlinejs/blob/master/FAQ.md#the-underscore-trick-is-designed-for-callbacks-but -not事件-如何-DO-I-交易与 - 事件)。

最简单的解决方案是将下划线作为额外参数添加到get回调中:

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

唯一的问题是,connect有一天会在其回调中添加第四个参数。以下是更安全一点(但可能是矫枉过正,因为我不明白为什么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
});

答案 1 :(得分:1)

我们对The Thingdom使用Express和Streamline,为此,我们构建了一个简单的包装器,允许next回调(第三个参数)成为一个Streamline友好的回调,用于两个路由处理程序和中间件处理程序。

你走了:

https://gist.github.com/1087991

=)

我一直想将它变成一个通用模块并发布到npm - 我很快就会这样做。 编辑:https://github.com/aseemk/express-streamline < / p>

请注意,由于这一点存在一个折衷 - 您不能让路由处理程序“继续”(通过)到其他路由处理程序。但是,我们从未使用过这个功能,并且不会预见到自己会这样做 - 知道每个路由处理程序都是最终目的地要简单得多 - 所以我们可以通过这种权衡取舍。

编辑:仅使用Express 2.x进行测试。