【问题标题】:Express JS - Run a middleware only the app starts up for the first timeExpress JS - 仅在应用程序第一次启动时运行中间件
【发布时间】:2018-10-14 23:20:19
【问题描述】:

我有一个使用 Express Generator 构建的 Express JS 应用程序。

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

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

如何实现?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    我的处理方法可能是创建一个新文件,其中包含一个返回此数据的函数 + 一个保留缓存版本的变量。

    例如:

    // 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 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多