gpt4 book ai didi

Node.js/Express - 通过请求/响应对象修改响应模板上下文

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

我正在使用 Express 在 Node.js 应用程序中提供网页服务。

假设我想要一个变量 foo 在响应对象的 render 方法渲染的所有 View 中可用。我知道我可以为这项任务定义动态助手。但是,当您需要像这样异步设置辅助变量(Mongoose 示例)时,我发现它们不适合:

Thing.count(filter, function(error, thingCount) {
foo = thingCount;
}

我尝试过使用连接中间件方法,这非常适合我,但是这里的问题是如何影响响​​应上下文。通过查看 express/lib/view.js 中的 render 方法定义,我发现可以通过写入 app._locals 对象来操作它:

function putFooIntoContext (req, res, next) {
Thing.count(filter, function(error, thingCount) {
res.app._locals.foo = thingCount;
next();
}
}

它按预期工作,但是,我有点担心这种简单的方法不是最好的解决方案。有人可以告诉我如何通过以 Express 开发人员设计的正确方式仅与请求/响应对象交互来影响响应上下文吗?

最佳答案

Express 3.x 允许以“app.use”的形式使用异步助手。因此,对于一个简单的全局“foo”变量,您的代码如下:

app.use(req, res, next) {
Thing.count(filter, function(error, thingCount) {
res.locals.foo = thingCount;
next();
});
}

当然,中间件选项也是有效的,这只是另一个观点,并且可以节省为每个 app.get(....) 插入中间件的麻烦

关于Node.js/Express - 通过请求/响应对象修改响应模板上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11688163/

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