Настройка переменной среды на основе клиента в NodeJS - PullRequest
0 голосов
/ 05 июня 2018

В настоящее время мы используем NodeJS на стороне сервера для нашего приложения SaaS. С помощью REST API клиенты (Web + Android + iOS) подключаются к приложению NodeJS.

Приложение Nodejs имеет файл маршрутизатора (действующий как файл конфигурации), в котором объявляются глобальные переменные для соединения с БД, Redis и AWS, как показано ниже.

enter image description here

Теперь один из наших клиентов хочет, чтобы их БД находились в частном порядке, что означает, что они не будут передаваться другим данным клиента.Другими словами, этот арендатор не хочет оставаться с другими арендаторами.Просто подумайте об этом клиенте как об арендаторе «L», как показано ниже. Пока приложение NodeJS остается тем же, данные для клиента «L» будут храниться на другом сервере.

Мне нужна помощь от сообщества Stackoverflow о том, как я могу получить / установить различные глобальные переменные на основе запроса клиента.Как я могу настроить и загрузить глобальные переменные на основе запроса клиента.Или каковы другие возможные способы достижения этого?

enter image description here

1 Ответ

0 голосов
/ 05 июня 2018

@ Da-jin его проблема в глобальных переменных, поэтому необходимо определить, когда использовать какой пул.Я бы предложил @Vikram создать оболочку или промежуточное программное обеспечение, которое возвращало бы объект конфигурации или идентификатор, который поможет вам решить, когда использовать этот конфигурационный файл, как только вы получите запрос.Опять же в любом случае есть изменения, необходимые.

Или простое решение, которое я бы предложил, - создать глобальный объект конфигурации, например:

config = { 
    shared: {
         mysqlPool : sharedMySqlPoolObj, 
         redisPool: sharedRedispoolObj
 },
 tenantT: {
        mysqlPool : tMySqlpoolObj,
        redispool: tRedispoolObj
  }
}

И где бы вы ни выполняли подключение БД или Redis, просто замените ваш код следующим:

Например, если вы делаете мое sql соединение

 let clientType = getClientType() // shared or tenantT

globalConfig[clientType].mysqlPool.connect(.....);

Может быть, это может помочь вам спасти от внесения серьезных изменений

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