Как создать один API nodejs с двумя разными базами данных?

#node.js #typescript #api

Вопрос:

Мы планируем создать одно серверное приложение API nodejs typescript для 2 разных клиентов. Один клиент использует mysql (customerM), а другой-elasticsearch (customerE).

Когда пользователь подключается к приложению, мы хотим, чтобы наш API использовал mysql, а если пользователь подключается, мы хотим, чтобы наш API использовал ES.

Мы знаем, что NoSQL и MySQL имеют разные подходы, но нам нужен один сервер по причинам обслуживания кода (наличие двух отдельных проектов, которые делают одно и то же, не является хорошим решением).

На данный момент я играю с архитектурой и получаю данные из mysql и из файла json для имитации клиентов. Я использую маршруты => контроллеры =>> службы =>>> модели. Мы хотим извлечь данные из моделей, преобразовать их и отправить в службу (у службы всегда будет одна и та же схема). На данный момент у меня есть sensors.model.ts, который отвечает за выбор правильной модели для использования из переменной env:

 let Sensor = null;

switch (config.db.source) {
  case 'file':
    Sensor = require('./sensors.model.file');
    break;
  case 'mysql':
    Sensor = require('./sensors.model.mysql');
    break;
}

export default Sensor;
 

В каждом файле sensors.model.xxx.ts у меня есть метод поиска, но с другим кодом. Мой сервис просто использует метод поиска, мои модели отправляют результат в том же формате.

Но мне не нравится такой подход. У вас есть какие-нибудь советы, ресурсы, … ?

Я новичок в уровне данных, DDD, …

Комментарии:

1. Привет, натансоло. Вопрос немного расплывчатый, и поэтому трудно давать советы без дополнительной информации. В общем, динамичность require -это то, чего я бы не советовал, особенно при использовании машинописного текста.

2. @cdimitroulas я редактирую свой вопрос и меняю клиента на клиента. Я думаю, это более понятно.