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-design-for-callbacks-but-not-事件如何做我处理事件)。

最简单的解决方案是将下划线作为额外参数添加到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
});
于 2012-05-22T09:31:00.763 回答
1

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

干得好:

https://gist.github.com/1087991

=)

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

请注意,这样做的结果是一个权衡——您不能让路由处理程序“继续”(失败)到其他路由处理程序。不过,我们从未使用过该功能,也没有预见到自己会这样做——知道每个路由处理程序都是最终目的地要简单得多——所以我们可以接受这种权衡。

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

于 2012-05-23T19:04:49.523 回答