我正在配置一个MongoDB数据库,但在Luminus项目中遇到了问题。根据lein模板,这应该是相当简单的:https://github.com/yogthos/luminus-template。输入
将显示默认的首页,对于我来说,它告诉我“需要配置MongoDB”。它告诉我可以在同一文件
很遗憾,当我连接我的浏览器时,仍然收到相同的“需要配置MongoDB”的消息。我还尝试使用CURL和在我的应用程序中定义的各种HTTP路由来访问数据库,但都没有成功。不过奇怪的是,在REPL中可以工作。
编辑:为了更清楚地说明问题,这里是REPL中的示例:
lein new luminus <name> +mongodb
将为您提供默认的mongoDB设置,即文件:src/app-name/db/core.clj
。要运行服务器,请键入lein ring server
,它应该会打开一个Web浏览器并将其默认指向localhost:3000
。将显示默认的首页,对于我来说,它告诉我“需要配置MongoDB”。它告诉我可以在同一文件
src/app-name/db/core.clj
中进行配置。我尝试了许多不同的方法,但目前我正在尝试并且对我来说最有意义的是以下内容:(defonce coll "collection-name")
(defonce db (let [uri "mongodb://127.0.0.1/db-name"
{:keys [conn db]} (mg/connect-via-uri uri)]
db))
很遗憾,当我连接我的浏览器时,仍然收到相同的“需要配置MongoDB”的消息。我还尝试使用CURL和在我的应用程序中定义的各种HTTP路由来访问数据库,但都没有成功。不过奇怪的是,在REPL中可以工作。
编辑:为了更清楚地说明问题,这里是REPL中的示例:
clj-project-name.db.core> (get-replies 2)
["mew-mew" [1.0 "hello"]]
在我的代码中,我有以下这些部分:
(ns clj-project-name.routes.home
(:require [compojure.core :refer :all]
[clj-project-name.layout :as layout]
[clj-project-name.util :as util]
[clj-project-name.db.core :as project-db]))
(defn get-replies [id] (mc/distinct db coll "replies" {:_id id}))
(GET "/user" [id] (user-page id)) ; defined in home-routes inside namespace clj-project-name.routes.home
(defn user-page [& [id]] ;defined inside namespace clj-project-name.routes.home
(layout/render "user.html"
{:id id
:replies (projectl-db/get-replies id)}))
<h1>User {{id}}'s page</h1> ; part of the HTML template
<p> <b>Replies:</b> {{replies}} </p>
这是在浏览器中加载的页面:
我们可以看到,replies
列表为空,而在REPL中我们看到应该是 ["mew-mew" [1.0 "hello"]]
。
编辑:另一个奇怪的地方是,当我输入 lein ring server
并加载浏览器后,我可以在终端上看到来自 mongodb
的以下输出:
2014-12-02T21:16:57.941-0500 [initandlisten] connection accepted from 127.0.0.1:38854 #28 (5 connections now open).
还有什么其他方法可以连接到MongoDB?感谢您的帮助。