我连接了一个mongodb数据库,如下所示:
(let [uri (config-keys :mongoURI)
{:keys [conn db]} (mg/connect-via-uri uri)])在使用mongoose的Node.js中,可以执行mongoose.Promise = global.Promise,只连接到数据库一次,然后从全局名称空间中的任何文件使用它。我如何使用monger来做这件事,这样我就不必在使用数据库的每个文件中重复上面的代码,而是只与它连接一次?
发布于 2020-02-04 15:14:08
因此,您的问题可以概括为:如何在应用程序中管理全局状态。
有几个库可以帮助您做到这一点:
的东西
您也可以不使用任何特定的库,使用中间件(假设您使用的是ring)来完成此操作:
(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]
...)https://stackoverflow.com/questions/60016867
复制相似问题