首页 > 解决方案 > 在 REST MVC 架构中在哪里初始化 OracleClient

问题描述

我设置了多条路由的快速路由,每条路由都使用不同的 Oracle 连接。我必须在 getConnection 之前调用 initOracleClient,但是当我尝试在两条路由中初始化 OracleClient 时出现错误(错误:NJS-077:Oracle 客户端库已被初始化)。我尝试将 initOracleClient 移动到结构中的不同位置;在应用程序级别和路由级别。您在 REST MVC 结构中的哪个位置初始化客户端?

标签: javascriptnode.jsoraclerest

解决方案


REST MVC 应用程序通常具有一些支持基础设施。也就是说,MVC 并不是关于如何构建整个程序代码的完整蓝图——只是如何分配某些职责的一般经验法则。

您正在使用的库需要初始化,显然这段代码应该只执行一次。有几种方法可以解决它:

  1. 在启动 express 服务器之前初始化客户端一次,然后传入准备使用的客户端以供路由处理程序使用。这可能是最容易使用的,但必须延迟.listen()调用 - 因此您的应用程序开始响应 HTTP 的时间可能会更长。
  2. 使用称为Singleton的模式来允许路由处理程序初始化客户端,但只在后台执行一次初始化。根据库的初始化方式(它是否返回 Promise?它是否使用回调?),这可能需要一些仔细的设计 - 例如,您可能需要存储并返回一个 Promise 实例,因此多个消费者将调用.then()在同一个承诺上。

推荐阅读