2012-07-31 48 views
1

Clojure,Noir和Monger都是新手,我只面临一个小问题。在Noir中似乎标准我保留我的模型在src/app_name/model_name.clj保持所有模型均可访问全球Monger连接

我面临的问题是我需要在每个模型中对MongoDB进行相同的连接,因为我不知道如何正确地“分享”连接,如下所示:

(ns app.models.theme 
(:require [monger.collection :as mc] 
      [monger.core :as mg])) 

(mg/connect!) 
(mg/set-db! (mg/get-db "app_development")) 

; Do stuff 

我该如何去通过整个应用程序共享此连接?谢谢。

+0

'(毫克/连接!)'连接在你的应用程序 – Ankur 2012-07-31 10:05:49

+0

@Ankur是可用的,但我讨厌必须连接并且一次又一次地选择数据库,即使它只是两行代码。当走出发展的道路时,它更加“痛苦”。 – 2012-07-31 10:17:14

+0

为什么你需要在每个模型的连接开始?你可以在一个单独的步骤中做一次......? – Rom1 2012-07-31 12:22:43

回答

2

,如果你总是连接到同一台服务器,然后就在你的server.clj添加这个(SRC // server.clj)

(mg/connect!) 

如果你只在该服务器中使用1分贝你只需要添加:

(毫克/设置分贝!(毫克/获取dB “DBNAME”))

到同一个文件

否则,你可以在代码例如做一个入口点或任何

(defpage "/dbname/tothis" {:keys [dbname]} 

    (mg/with-db (mg-get-db dbname)))..... 
+0

谢谢,这是我以为我已经做了,但显然错过了要求我用来设置连接的models.clj文件。谢谢你给我保证,这工作,让我找到错误。 :) – 2012-08-01 05:05:36