我创建了一个中间件来摆脱我的页面请求,但它似乎运行了两次......
第一次运行没有错误,第二次有错误...
这是我的代码:
app.js 文件
app.get('/:slug', buildingController.findBuilding, buildingController.getBuilding);
buildings.js 文件
/**
* Create a Middleware to Find Buildings
*/
exports.findBuilding = function(req, res, next) {
if (!req.isAuthenticated()) {
return res.redirect('/login');
}
Building.find(
{ "uniqueLink": req.params.slug,
"$or": [
{ "_creator": req.user.id }
]
}, function(err, building) {
if (err) {
return next(err);
} else {
if (building.length == 0 || building == null) {
req.flash('errors', { msg: 'You are not allowed to see this building' });
res.redirect('/buildings');
next();
} else {
req.building = building[0];
next();
}
}
}
);
};
/**
* GET /:slug
* Building home page.
*/
exports.getBuilding = function(req, res) {
var building = req.building;
res.render('building/home', {
title: building.name,
building: building
});
};
这是控制台输出:
Express server listening on port 3000 in development mode
GET /my-slug 200 359.399 ms - -
很好,没有错误,但是:
TypeError: Cannot read property 'name' of undefined
[...etc...]
我哪里失败了? 在我的页面上一切正常,但我希望没有错误......
我仍在学习 Node.js。
谢谢。
最佳答案
if (building.length == 0 || building == null) {
我认为在这种情况下不应该调用 next()
关于javascript - 中间件运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085815/