javascript - 在 REST MVC 架构中在哪里初始化 OracleClient
问题描述
我设置了多条路由的快速路由,每条路由都使用不同的 Oracle 连接。我必须在 getConnection 之前调用 initOracleClient,但是当我尝试在两条路由中初始化 OracleClient 时出现错误(错误:NJS-077:Oracle 客户端库已被初始化)。我尝试将 initOracleClient 移动到结构中的不同位置;在应用程序级别和路由级别。您在 REST MVC 结构中的哪个位置初始化客户端?
解决方案
REST MVC 应用程序通常具有一些支持基础设施。也就是说,MVC 并不是关于如何构建整个程序代码的完整蓝图——只是如何分配某些职责的一般经验法则。
您正在使用的库需要初始化,显然这段代码应该只执行一次。有几种方法可以解决它:
- 在启动 express 服务器之前初始化客户端一次,然后传入准备使用的客户端以供路由处理程序使用。这可能是最容易使用的,但必须延迟
.listen()
调用 - 因此您的应用程序开始响应 HTTP 的时间可能会更长。 - 使用称为Singleton的模式来允许路由处理程序初始化客户端,但只在后台执行一次初始化。根据库的初始化方式(它是否返回 Promise?它是否使用回调?),这可能需要一些仔细的设计 - 例如,您可能需要存储并返回一个 Promise 实例,因此多个消费者将调用
.then()
在同一个承诺上。
推荐阅读
- python - 在 Safari 上使用 Robot Framework 上传文件
- html - 角度 7+:ngbDropdown 菜单折叠而不是弹出框
- c# - 在生产者 - 消费者模式中寻找用于公平数据处理的理想 Azure 服务
- reactjs - 我想从输入字段 react-redux 获取数据
- kotlin - 运行 Kotlin 脚本时设置 JVM 最大堆大小?
- node.js - 在 NodeJS 中为 PowerBI 创建自定义视觉对象 - “找不到名称‘IVisualHost’
- arrays - 如何将两个相关数组存储到 laravel 控制器数据库中的一个表行中?
- c# - 使用 selenium 在 jquery 日期和时间选择器中设置日期和时间
- c++ - 输入/输出运算符重载,必须只取一个参数错误
- .htaccess - 重定向到另一个页面 - htaccess