node.js - 如何使用两个不同的数据库创建一个 nodejs API?
问题描述
我们计划为 2 个不同的客户创建一个 API 后端 nodejs typescript 应用程序。一位客户使用 mysql (customerM),另一位使用 elasticsearch (customerE)。
当 customerM 连接到应用程序时,我们希望我们的 API 使用 mysql,如果 customerE 连接,我们希望我们的 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 我都有一个 find 方法,但代码不同。我的服务只使用 find 方法,我的模型以相同的格式发送结果。
但我不喜欢这种方法。你有一些建议,资源,......?
我是数据层的新手,DDD,...
解决方案
推荐阅读
- jmeter - 在 JMeter 中录制时出现“此页面无法显示”错误
- angular-material - #Angular7 [ngStyle] 背景图像在 Angular 7 材质中不起作用
- java - 使用 maven 升级到 Java 11、sonarqube、jacoco 导致错误
- wpf - css !在 WPF 风格中很重要
- symfony - Symfony 3.4 中的 Doctrine QueryBuilder JOIN 查询中的扁平数组结构
- reactjs - 如何在 react-select 中做单元素视图应该看起来像多?
- generics - Dart 泛型 - 类型不是子类型
- java - JavaFx 通过从另一个控制器调用方法
- vuetify.js - 如何更改 v-text-field 的高度
- c++ - 迭代Kahan求和的最优实现