当我使用expressjs时,我不知道如何使用streamlinejs。
查看快递代码:
var app = express.createServer();
app.get('/', function(req,res) {
User.find({name:'Jack'}, function(err, users) {
res.send(users);
});
});
如何在代码中使用streamlinejs?
答案 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进行测试。