Express JS-仅在应用首次启动时运行中间件

时间:2018-10-14 23:20:19

标签: node.js express

我有一个从Express Generator生成的Express JS应用程序。

我需要运行一个中间件,以便仅在应用启动时从后端数据库加载一些恒定数据。

我的假设是,将中间件添加到app.js中并不是一个好主意,因为它会运行每个req和res循环,这会降低性能。

如何实现?

1 个答案:

答案 0 :(得分:0)

我要解决的方法可能是用一个返回此数据的函数创建一个新文件,再加上一个变量,该变量保留缓存的版本。

例如:

// MyThing.js
let cachedData;

const loadData = () => {

 // Load data for the first time

};

const getData = () => {

  if (!cachedData) loadData();

};

module.exports = {
  getData,
  loadData
};

现在,如果您需要在其他任何地方检索此数据,则可以执行以下操作:

// Some-other-file.js
const { getData } = require('./MyThing.js'):

console.log(getData());

请记住以下几点:

  • 我的名字很糟糕,因为我不确定您要加载的内容。
  • 如果加载此数据是基于异步操作(例如网络调用或数据库查询),请确保它们都是async函数。