首页 > 解决方案 > 是否可以在整个 Node Express 服务器上定义一个全局变量?

问题描述

我正在创建一个依赖于从 API 获取的数据的 Node/Express 应用程序。问题是我的应用程序必须经常从 API 获取并且每次都进行一些密集计算,所以我想缓存来自 API 和密集计算的结果。

我已经写出了一些非常基本的缓存功能(即将值写入文本文件),但我很好奇是否有办法将内存中的值保存在某种对象中以便在整个应用程序中轻松访问(例如跨多个files) 而不是每次都使用 util 函数从文本文件中读取值。

例如,也许我有一个看起来像这样的范例:

当服务器第一次初始化时,我获取数据,并创建某种缓存值:

const data = await api.get('colors');


const map = {
  red: data.red,
  blue: data.blue,
  green: data.green,
}

在我的一个控制器中,我想访问map并能够使用这些值。所以也许我可以做这样的事情:

import { map } from './utils/mapManager.js'

const getGreenValue = (req, res) => {
   res.send(map.green);
}

设计试图实现这种行为的系统的最佳方法是什么?

在此先感谢,并很高兴回答任何澄清问题。

标签: javascriptnode.jsexpressmodule

解决方案


您可以使用 expressjs app.locals 属性。

写入数据:

app.locals.map = map;

读取数据:

let map = app.locals.map;

文件:

https://expressjs.com/en/api.html#app.locals


推荐阅读