gpt4 book ai didi

javascript - 中间件运行两次

转载 作者:行者123 更新时间:2023-12-02 17:07:53 26 4
gpt4 key购买 nike

我创建了一个中间件来摆脱我的页面请求,但它似乎运行了两次......

第一次运行没有错误,第二次有错误...

这是我的代码:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com