【发布时间】:2014-12-04 19:57:25
【问题描述】:
在我的 Node.js/Express 应用程序中,我想加载一些路由来异步表达。确切地说,我想从 mongodb 中检索促销代码,并根据这些代码创建动态路由。
我目前有这个代码:
var promotion = require('../models/promotion');
promotion.list(function(promotions) {
// Loop all promotions
_.each(promotions, function(promo) {
app.route(promo.get('path')).get(promotion.claim);
});
});
不幸的是,这不起作用。经过一番调试,我发现这些路由实际上是添加到路由列表中的,但是因为它们是异步加载的,所以它们是在最后添加的 'catch all' 路由之后添加的。我通过检查发现:
console.log( app._router.stack );
我已经阅读了一些解决方案,这些解决方案涉及在该函数中添加一条捕获所有规则并处理路由路径,但老实说,这听起来不太好。我想继续将 app.route() 用于我的其他路线。
【问题讨论】: