2013-10-14 30 views
1

我在grails + mongodb中有第一個expire。我在保存對象時遇到問題。首先,我連本地蒙戈DB以這樣的方式的Grails:Grails + Mongodb =不要堅持對象。爲什麼?

grails { 
    mongo { 
     host = "localhost" 
     //port = 27107 
     //username = "login" 
     //password="pwd" 
     databaseName = "db" 
    } 
} 

我不知道爲什麼,但如果我指定端口和登錄+密碼(我創建這樣的密碼這樣的用戶),Grails的給我一個錯誤,不能連接到mongodb。這是mongodb的對守護程序開始日誌: 22時47分04秒[initandlisten] MongoDB的起點:PID = 918端口= 27017 DBPATH =的/ var/lib中/ mongodb的64位主機= UBNT-VirtualBox的

好的,帶出端口和登錄+傳遞它的作品。接下來,我創建域:

class Cover { 
    String name 
    String url 

    static constraints = { 
     name(blank: false) 
     url(blank: false) 
    } 

    static mapping = { 
     collection "cover" 
     database "covers" 
    } 
} 

我嘗試將其保存:

Cover cover = new Cover() 
cover.name = title.text() 
cover.url = url 
println("Try to save object: ${cover.toString()}") 
cover.save() 
println("After save object: ${cover.toString()}") 

我在輸出:

Try to save object: com.mydomain.Cover : (unsaved) 
After save object: com.mydomain.Cover : 23 

當我運行命令 '蒙戈' 殼,然後再嘗試到:

>use covers 
>db.cover.find() 

我看到有nothi集合中。但是,當我看着db.cover.next_id.find(),我看到23.所以它看起來像id增量。我不知道爲什麼對象沒有保存到mongodb。爲什麼?在嘗試連接到mongodb並通過java驅動程序保存並保存工程之前(因此mongodb似乎正確安裝)。

另外,當我運行shell我看到這樣的信息>連接到:測試什麼意思測試?我可以在哪裏配置它?可能是殼連接到一個數據庫和grails到另一個?

回答

0

我發現一個錯誤,它發現我在src/groovy源必須以特定的方式訪問grails源,所以要保存封面我需要創建服務Grails中,在那裏我中央社implemet保存方法,以及他們在的地方,我想打電話給我保存應該以這樣的方式

def ctx = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT) 
CoverService coverService = ctx.coverService 

得到服務而現在它的工作原理。

0

對我來說,它似乎節省了沒有問題,除非你有一些約束錯誤... 你試圖在保存/驗證後打印錯誤?

println cover.errors 

你也可以嘗試恢復從應用程序的所有實例,而不與

println Cover.list() 

在尋找蒙戈如果這最後一行,你可以看到你保存的情況下,也許Grails是數據庫混合作爲你有在databaseName = db,你後來說蓋應該被保存到覆蓋數據庫

+0

Ou,我在配置db數據庫中丟失了這方面的使用。是的,它真的可以是這樣,我會檢查,謝謝你的想法! – sphinks

+0

println Cover.list()輸出只是[],這是什麼意思? – sphinks

+0

這意味着它沒有被保存,因爲數據庫中的封面列表是空的。您是否在保存或驗證後嘗試打印錯誤? – Eylen