在同构 React 应用程序中的快速中间件之间传递状态

2024-01-07

我有一个同构的反应应用程序,我想以某种方式在快速中间件之间传递状态。

我有以下处理表单提交的快速路线:

export const createPaymentHandler = async (req: Request, res: Response, next: NextFunction) => {
  const { field } = req.body;

  if (!paymentType) {
    res.locals.syncErrors = { field: 'some error.' };
    next();
    return;
  }

  try {
    const { redirectUrl } = await makeRequest<CreatePaymentRequest, CreatePaymentResponse>({
      body: { paymentType },
      method: HttpMethod.POST
    });

    res.redirect(redirectUrl);
  } catch (err) {
    error(err);

    res.locals.serverError = true;

    next();
  }
};

下一个中间件负责处理渲染。

目前我正在使用res.locals,有没有更好的方法或者公认的模式?


在我看来,你的问题更多是关于将一​​些数据传递给下一个中间件。由于渲染逻辑由下一个中间件处理,因此快速路由不应该关心数据的使用方式。你的方法看起来不错。

res.locals http://expressjs.com/en/api.html#res.locals是将数据传递到下一个中​​间件的推荐方式。来自文档:

此属性对于公开请求级别信息非常有用,例如请求路径名称、经过身份验证的用户、用户设置等。

此外,由于添加的变量的范围仅限于当前请求,因此数据仅在当前请求的生命周期内可用。也许你可以设定一个约定,添加一个state键在res.locals存储所有状态变量,但当前的方法也可以正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同构 React 应用程序中的快速中间件之间传递状态 的相关文章

  • ELEMENT.style.color 在 IE 中不起作用

    在一个小型 Web 应用程序中 我使用 JavaScript 在文本框中设置一些文本及其颜色 在下面的片段中 el 是我的对象 这段代码在 Firefox Opera 和 Safari 下产生了正确的效果 但在 IE 下却没有这样的运气 我
  • 匹配 JavaScript RegEx 中的不可见字符

    我有一些包含不可见字符的字符串 但它们位于可预测的位置 通常 围绕我想要提取的文本片段 然后在第二次出现之后我想保留文本的其余部分 我似乎不知道如何关闭隐形字符 and将它们从我的结果中排除 为了匹配隐形 我一直在使用这个正则表达式 xA0
  • 无法使用 MV3 从 Firefox 下的通用脚本导出到 background.js

    我试图在服务工作者 background js 和内容脚本之间重用一些功能 https stackoverflow com questions 73421706 how to reuse a javascript function betw
  • JSSOR - 无法读取未定义的类型属性“currentStyle”

    我正在尝试将 Jssor 滑块实现到我的页面中 但我不断在标题中出现该错误 我的内容是通过 Javascript 动态创建的 如下所示 var slide app createHTML div id inventorySlides null
  • 如何在没有数据库的情况下创建AJAX分页?

    是否可以在没有 MySQL 帮助的情况下获取 AJAX 分页页面 难道我不能只添加一个包含我需要显示的文本和标记的 PHP 文件 然后通过单击页码将该内容提供给用户吗 那么可以用纯 jQuery 和 PHP 来实现吗 您会使用什么代码方法来
  • 可拖动的非模态弹出窗口 Jquery Mobile

    我希望在 Jquery mobile 中有一个弹出窗口 它不会阻止用户与页面交互 并且 data dismissible false 即当页面的另一部分与页面的另一部分交互并保持可见时 弹出窗口不会消失 我已经尝试过这个 popupNew
  • 如何将多个文件上传到Firebase?

    有没有办法将多个文件上传到 Firebase 存储 它可以在一次尝试内上传单个文件 如下所示 fileButton addEventListener change function e Get file var file e target
  • 如何在React中处理多个路由器

    假设我们有一个网络应用程序 它通常有很多视图 例如索引页面 管理面板 帮助页面 联系人等 我在主index js 中使用react router dom 来处理它们 它工作得很好 但是现在我在开发管理面板时遇到了问题 它是 index js
  • ExpressJS - 提供通用 Nuxt 应用程序和 AngularJS SPA

    我有一个具有以下结构的博客项目 服务器 用 Node Express 编写 管理员 AngularJS SPA public AngularJS SPA 目前 管理部分和公共部分具有相同的域 但管理部分使用不同的子域 这允许我在 Expre
  • 输入和文本区域可以拖动吗?

    MDN 规范以及我能通过 Google 找到的每个网站都说所有 HTML 元素都可以拖动 然而 在实践中 我发现我无法拖动文本输入或文本区域 即使它们已被禁用 例如 使用以下代码 img src http www placehold it
  • 字符串化 JavaScript 对象

    我正在寻找字符串化一个对象 我想要这样的输出 1 valeur dalebrun usager experttasp date 2013 08 20 16 41 50 2 valeur test usager experttasp date
  • Chrome:window.print() 打印对话框仅在页面重新加载后打开 (javascript)

    我面临着一个非常奇怪的问题 我正在从 javascript 文件调用 window print 这在 Safari IE Firefox 中运行良好 直到两小时前 它在 Chrome 中也运行良好 版本29 0 1547 57 我没有更改我
  • 使用 jquery 时出现控制台错误 - Uncaught TypeError: Object # has no method

    我尝试使用以下 js 添加类或 css 样式 但出现控制台错误 var i 0 question i addClass show 收到以下控制台日志错误 Uncaught TypeError Object has no method add
  • 通过ajax POST提交两次表单

    插入到mysql using php通过文件调用AJAX 前insert语句php代码执行select查询到查找重复记录并继续insert statement Issue 从ajax调用php文件时 它执行了两次并得到作为重复记录的响应 好
  • 将命令行参数传递给 emscripten 生成的应用程序

    当使用 Emscripten 编译 C 程序时 会生成一个 HTML 页面来显示程序的结果 我想知道如何将命令行参数传递给应用程序 例如 对于原始的 C 程序 它是 bfs 32 1 我能够通过向生成的 html 文件添加一行来传递命令行参
  • 使用 sockjs 和 stomp 进行 /info 请求期间没有 cookie

    我正在尝试将 Spring Security 与 websockets 一起使用 作为一个例子 我正在使用 spring websocket chat https github com salmar spring websocket cha
  • 如何在javascript中删除对象的一部分

    这是我的代码 var data btn click function total data push id total cell val1 val2 val3 每次用户点击btn按钮 我向数据对象添加一些值 现在我的问题是如何删除有的部分i
  • 用于检查字符串是否至少包含 3 个字母数字字符的最有效的正则表达式

    我有这个正则表达式 a zA Z0 9 3 我用它来查看字符串中是否至少包含 3 个字母数字字符 似乎有效 它应该匹配的字符串示例 a3c 0 c 8 9 9d 但是 我需要它更快地工作 有没有更好的方法使用正则表达式来匹配相同的模式 编辑
  • 了解 React Native 中的默认字体大小

    在过去的几个月里 我一直在开发一个 React Native 应用程序 但有些事情总是让我困惑 而我现在正试图弄清楚它的真相 我正在尝试标准化应用程序中的字体大小 正文 标题等 并且正在努力了解 React Native 究竟从哪里获取默认
  • d3.js 更新视觉效果

    我有一个与 d3 js 放在一起的树形图 我通过 getJSON 填充数据 效果很好 但是 我在 setInterval 方法中具有此功能 并且它似乎并没有刷新自身 var treemap d3 layout treemap padding

随机推荐

  • 如何在Python脚本中设置PATH=%PATH%作为环境?

    我正在尝试从Python程序启动一个exe文件 该exe文件是使用Visual Studio编译的C 项目的输出 在此 c 项目的属性中 配置 gt 属性 gt 调试 gt 环境 中的以下设置 PATH PATH lib testfolde
  • 与库版本相关的 TypeScript @types 版本

    谁能解释一下 TypeScript types 背后的版本控制https github com DefinitelyTyped DefinitelyTyped https github com DefinitelyTyped Definit
  • 像 Facebook 一样从任何 URL 获取特定图像

    My Question might be looks like similar to other questions but really this is not according to my knowledge i can t unde
  • 开发算法的人和开发人员之间最有效的工作流程是什么?

    我们正在开发具有视频模式识别功能的软件 我们有 7 位数学家正在创建算法 另外 我们有 2 名开发人员使用这些算法维护 开发应用程序 问题在于数学家使用不同的开发工具来创建算法 例如 Matlab C C 另外 因为他们不是开发人员 所以不
  • Android 在单击按钮时返回到第一个 Activity

    我正在编写一个应用程序 其中处理 4 个活动 比方说 A B C 和 D 活动 A 调用 B B 调用 C C 调用 D 在每个活动上 我都有一个名为 home 的按钮按钮 当用户单击任何 B C D 活动中的主页按钮时 应用程序应该返回到
  • 如何创建列表的 numpy 数组?

    我想创建一个 numpy 数组 其中每个元素都必须是一个列表 因此稍后我可以向每个元素附加新元素 我已经在谷歌和堆栈溢出上查看过 但似乎无处可寻 主要问题是 numpy 假设你的列表必须成为一个数组 但这不是我想要的 正如你发现的那样 np
  • 如何从 ngGrid 中显示的按钮调用作用域方法 - 在 Angular js 中

    angular module harbinger controller Admin UserlistController function rootScope scope location http userService etc scop
  • 使用 Dagger 2 进行 Presenter 注入

    我刚刚开始使用 Dagger 2 我在网上发现了数千个指南 每个指南都有不同的实现 我现在有点困惑 所以基本上这就是我现在写的 应用程序模块 java Module public class AppModule Application mA
  • 如何获取属于自定义属性的属性?

    我需要从自定义属性中查找应用自定义属性的属性的类型 例如 MyAttribute string MyProperty get set 给定 MyAttribute 实例 我如何获取 MyProperty 的类型描述符 换句话说 我正在寻找
  • 可滚动 TextView 不允许在应用程序暂停后选择文本

    我有一个可滚动的TextView用户可以在其中选择文本 我通过将移动方法设置为来添加滚动条ScrollingMovementMethod Problem 除非应用程序暂停 例如 切换应用程序后 否则选择效果很好 一旦应用程序再次处于活动状态
  • 在本地开发 Azure 函数

    我领导着一个由天蓝色函数开发人员组成的大型团队 因此 微软引用的大多数使用 azure Web 界面的示例对我来说不起作用 我正在使用模拟器在本地开发Azure功能以节省一些成本 我通过 Visual Studio 将所有功能发布到我的集成
  • 如何在 Flutter 中使用 Dio 和 multi_image_picker 插件上传多张图片

    我想在 Flutter 中使用 Dio 和 multi image picker 插件上传多张图片 List
  • Android 5.0 上点击 Switch 崩溃

    在 Android 5 0 中单击我的应用程序中的开关时 应用程序崩溃并显示如下所示的 logcat logcat 没有在其中的任何地方引用我的代码 并且此开关在所有以前的版本上都运行良好 除了背景颜色之外 该开关看起来是不可见的 并且只有
  • 在 Unix shell 中将一列数字相加

    给定文件列表files txt 我可以得到它们的尺寸列表 如下所示 cat files txt xargs ls l cut c 23 30 会产生这样的结果 151552 319488 1536000 225280 我怎样才能得到tota
  • 如何确定导致 Windows Installer 重复自我修复的原因?

    如何仅记录导致 Installshield 2008 所做的 MSI 文件通过 重新安装 的更改自我修复 自修复的原因是什么 如何使用 Installshield 2008 禁用 MSI 自我修复 自我修复 简单简短的解释 如果我删除文件
  • SampleSyncAdapter 断点不起作用

    我正在使用 Eclipse 来了解 SampleSyncAdapter 示例的工作原理 我无法让断点发挥作用 我在多个位置设置了断点 但没有一个被击中 例如 AuthenticatorActivity onCreate 永远不会被调用 有人
  • 从 pdf 中提取表格

    我正在尝试从这个表中获取数据PDF https www dropbox com s y3nivxhjvvzva7d test1 pdf dl 0 我尝试过 pdfminer 和 pypdf 运气不错 但我无法真正从表中获取数据 This i
  • jQuery 触发器在 IE 中不起作用。为什么?

    XynBp0 find input each function if this attr value Cancel this trigger click 在 IE7 中不起作用 这很奇怪 但尝试创建一个自定义事件 XynBp0 input
  • 如何通过引用动态设置多维数组中的值

    这整个晚上都让我发疯 基本上 我需要在清理值后在多维数组中设置一个特定值 然后在验证值后再次设置 也许 取决于验证 如果验证失败 则需要将值设置为空字符串 假设我有这个帖子数组 data should be int yjd 清理该值后fil
  • 在同构 React 应用程序中的快速中间件之间传递状态

    我有一个同构的反应应用程序 我想以某种方式在快速中间件之间传递状态 我有以下处理表单提交的快速路线 export const createPaymentHandler async req Request res Response next