如何在expressjs中使用streamlinejs?

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

看看快递代码:

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

如何在代码中使用streamlinejs?

这是我在FAQ中快速回答的一个问题(https://github.com/Sage/streamlinejs/blob/master/FAQ.md#the-underscore-trick-is-designed-for-callbacks-but-not-事件 – 怎么办 – 我 – 成交 – 与事件)。

最简单的解决scheme是将下划线作为额外参数添加到getcallback中:

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

唯一的问题是如果connect添加第四个参数的callback有一天。 以下是更安全(但可能矫枉过正,因为我不明白为什么connect会改变它的callbackAPI):

 app.get('/', function(req,res) { (function(_) { var users = User.find({name:'Jack'}, _); res.send(users); })(trap); // trap is a generic callback that handles errors }); 

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

干得好:

https://gist.github.com/1087991

=)

我一直想把它变成一个通用的模块,并发布到npm – 我会尽快做到这一点。 编辑: https : //github.com/aseemk/express-streamline

请注意,有一个折衷是由于这个 – 你不能让路由处理程序“继续”(通过)到其他路由处理程序。 但是,我们从来没有使用过这个function,也没有预见到自己会这样做 – 要知道每个路由处理器都是最终的目的地,所以我们在这个平衡点上就可以了。

编辑:这只是用Express 2.x进行testing。