首页 > 解决方案 > 延迟加载req.user,带有快递和护照?

问题描述

我们正在使用 express 并且对于某些操作想要检查登录用户的详细信息。我们宁愿避免每次填写时都点击数据库req.user,如果数据被读取,最好只加载数据。API 端点受 JWT 保护,每次访问都会对其进行验证。

有没有办法解决这个问题?

标签: node.jsexpress

解决方案


有多种解决方案:

  1. 您可以将这些详细信息直接放入 JWT 中,因此无需调用 db.xml 即可获得所有这些信息。如果有一些秘密/密码或者如果您需要的数据可以经常更改(因为它在 JWT 中将保持旧直到刷新),则这是不可行的。

  2. 最简单的方法就是使用方法。而不是req.usercallreq.getUser()或 have function getUser(req)。在该函数中,您可以编写所有业务逻辑,例如 - 检查用户是否已存储在req._user. 如果是这样,请将其退回。如果没有,请从数据库加载它,将其存储req._user并返回。

  3. 是的,有一种方法可以直接从 处理“获取”属性req.user,尽管我会避免这种情况并尽可能使用前面的选项之一。如果您有一些带有旧 node.js 的旧代码,则可以使用此已弃用的方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter如果您使用的是现代node.js,那么这就是现在的方式https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get


推荐阅读