最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 10浏览 0评论

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

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

我已经在网上搜索了SO,但还没有找到如何正确执行此操作的良好解释。我知道如果没有回调res.render部分我可以让我的API正常工作并将正确的JSON返回给邮递员。

回答如下:
  • 您可以通过将数据放入req对象将数据从中间件传递到处理程序。中间件被定义为像(req, res, next) => { // Do stuff here}这样的函数。在里面,你可以做req.somePayloadIWantToPass = {hello: 'world'};
  • 在您的情况下,传递信息可能如下所示

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}!`));

Notes

  • 您不能多次使用send来满足特定要求
  • 在这里,我们将payload定义为硬编码变量,但您可以定义某个逻辑,以从您的请求的主体或参数中派生出来

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

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

我已经在网上搜索了SO,但还没有找到如何正确执行此操作的良好解释。我知道如果没有回调res.render部分我可以让我的API正常工作并将正确的JSON返回给邮递员。

回答如下:
  • 您可以通过将数据放入req对象将数据从中间件传递到处理程序。中间件被定义为像(req, res, next) => { // Do stuff here}这样的函数。在里面,你可以做req.somePayloadIWantToPass = {hello: 'world'};
  • 在您的情况下,传递信息可能如下所示

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}!`));

Notes

  • 您不能多次使用send来满足特定要求
  • 在这里,我们将payload定义为硬编码变量,但您可以定义某个逻辑,以从您的请求的主体或参数中派生出来

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论