我設定了多個路由的快速路由,每個路由使用不同的 Oracle 連接。我必須在 getConnection 之前呼叫 initOracleClient,但是當我嘗試在兩個路由中 initOracleClient 時出現錯誤(錯誤:NJS-077:Oracle 客戶端庫已經初始化)。我嘗試將 initOracleClient 移動到結構中的不同位置;在應用程式級別和路由級別。您在 REST MVC 結構中的哪個位置初始化客戶端?
uj5u.com熱心網友回復:
REST MVC 應用程式通常具有一些支持基礎設施。也就是說,MVC 不是關于如何構建整個程式代碼的完整藍圖——只是如何分配某些職責的一般經驗法則。
您使用的庫需要初始化,顯然這段代碼應該只執行一次。有幾種方法可以解決這個問題:
- 在啟動 express 服務器之前初始化客戶端一次,然后傳入準備使用的客戶端以供路由處理程式使用。這可能是最容易使用的,但必須延遲
.listen()呼叫 - 所以直到您的應用程式開始回應 HTTP 的時間可能更長。 - 使用稱為Singleton的模式允許路由處理程式初始化客戶端,但僅在后臺執行一次初始化。根據庫的初始化方式(它是否回傳 Promise?是否使用回呼?),這可能需要一些仔細的設計 - 例如,您可能需要存盤和回傳一個 Promise 實體,因此多個消費者將呼叫
.then()在同一個 Promise 上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/356380.html
標籤:javascript 节点.js 甲骨文 休息
上一篇:按每個組擴展缺失日期的資料
