首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据从控制器移动到res.render

将数据从控制器移动到res.render
EN

Stack Overflow用户
提问于 2019-02-16 16:56:03
回答 1查看 160关注 0票数 0

我想知道如何在控制器/中间件中获取和执行类似return res.status(400).json({message: 'This is my message'})的操作,然后我希望能够在回调或其他自定义控制器执行res.render('test', {message}),而message来自于上面的控制器。我使用EJS作为视图引擎,这是{message}部分的来源。

我在网上和网上都看过了,但还没有找到一个很好的解释如何正确地做到这一点。我知道,如果没有回调res.render部件,我的API就可以正常工作,并将正确的JSON返回给postman。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-16 17:47:19

  • 通过将数据放在req对象中,可以将数据从中间件传递到处理程序。中间件被定义为类似于(req, res, next) => { // Do stuff here}的函数。在里面你可以做req.somePayloadIWantToPass = {hello: 'world'};
  • 在您的例子中,传递信息可能如下所示
代码语言:javascript
运行
复制
const app = require("express")();
const port = 3000;

// Your middleware
app.use((req, res, next) => {
  const payload = { message: "this is my message", statusCode: 400 };
  req.payload = payload;
  next();
});

// Your request handler
app.get("/", (req, res) => {
  const { message, statusCode } = req.payload;
  res.status(statusCode).render({ message });
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

备注

  • 对于某个请求,不能多次使用send
  • 在这里,我们将payload定义为一个硬编码变量,但是您可以定义一个特定的逻辑来从请求的主体或参数派生它。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54725455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档