Можно ли определить глобальную переменную на всем сервере Node Express? - PullRequest
1 голос
/ 05 ноября 2019

Я создаю приложение Node / Express, которое зависит от данных, извлекаемых из API. Проблема заключается в том, что моему приложению приходится часто извлекать данные из API и каждый раз выполнять интенсивные вычисления, поэтому я хочу кэшировать результаты как из API, так и из интенсивных вычислений.

Я уже записал некоторые очень элементарные функции кэширования (например, запись значений в текстовый файл), но мне любопытно, есть ли способ сохранить значения в памяти в каком-либо объекте для легкого доступа черезцелое приложение (например, для нескольких файлов) вместо того, чтобы иметь функцию 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);
}

Каков наилучший способ разработки системы, которая пытается добиться такого поведения?

Заранее спасибо, ис удовольствием отвечу на любые уточняющие вопросы.

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать свойство expressjs app.locals.

Для записи данных:

app.locals.map = map;

Для чтения данных:

let map = app.locals.map;

Документы:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...