如何在服务器中全局使用杂货连接?



我有一个 mongodb 数据库,我已经连接到它,如下所示:

(let [uri  (config-keys :mongoURI)
{:keys [conn db]} (mg/connect-via-uri uri)])

在 Node.js 中使用猫鼬,可以执行mongoose.Promise = global.Promise,仅连接到数据库一次,然后从全局命名空间中的任何文件使用它。如何使用 monger 执行此操作,以便我不必在使用数据库的每个文件中重复上述代码,而只需连接一次?

因此,您的问题可以概括为:如何在应用程序中管理全局状态。

有几个库可以帮助您执行此操作:

  1. 组件,可让您创建全局状态映射,并将其传递给需要它们的函数
  2. mount,可让您创建类似于全局变量的内容
  3. 组成部分

您也可以在没有任何特定库的情况下使用中间件(假设您使用的是环(来执行此操作:

(defn add-db-to-req [handler uri]
(fn [req]
(let [connection (mg/connect-via-uri uri)]
(handler (assoc req :connection connection)))))

任何下游的中间件都可以通过以下方式访问连接

(:connection req)

并将其传递给需要它的函数。

通常,您需要将connection传递给依赖于它的任何函数,而不是依赖于全局状态:

(defn fetch-from-database [{:keys [db conn] :as connection} whatever]
...)

相关内容

  • 没有找到相关文章

最新更新