gpt4 book ai didi

node.js - 有没有一种方便的方法可以在 Express 中分几步装饰 View 选项?

转载 作者:太空宇宙 更新时间:2023-11-03 23:11:31 25 4
gpt4 key购买 nike

我有一些变量将在每个动态页面上使用,就像在布局中使用的一样。我们称它们为用户城市。对于用户,我按照明确的说明将中间件放在我使用它的位置前面,但我这样做了:

app.get('/*', function(req, res, next){
req.user = { name: "Kit" };
next();
});

user放在req上似乎是有意义的,但它在cities上有点崩溃,因为它似乎没有语义上适合 req 对象:

app.get('/*', function(req, res, next){
User.collection.distinct('city', function(err, response){
req.cities = response;
next();
});
req.menu = response;
});

然后我遵循:

app.get('/:city', function(req, res){
res.render('city', { cities: cities, user: user });
});

有没有更好的方法来解决这个问题?

最佳答案

我不认为你的做法有什么严重的错误,特别是对于一个小的代码库。看起来城市与用户绑定(bind)在一起,因此您可能只想通过在 User.collection.distinct 回调中执行 req.user.cities = response 将城市卡在 req.user 上。另一件事是您在每次请求时都会查询这些城市。这可能没问题,但如果该数据相对静态,则使用 session 并在 session 生命周期内缓存该数据作为优化是有意义的。

如果您想要一个更清晰的名称,您可以创建一个顶级 locals 对象,挂起该请求,然后将用户和城市挂起,以便 req.locals.cities

关于node.js - 有没有一种方便的方法可以在 Express 中分几步装饰 View 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071141/

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