[英]Grails+Mongodb = do not persist object. Why?
我在grails + mongodb中第一次過期。 我在保存對象方面有問題。 首先,我以這種方式將本地mongo db連接到了grails:
grails {
mongo {
host = "localhost"
//port = 27107
//username = "login"
//password="pwd"
databaseName = "db"
}
}
我不知道為什么,但是如果我指定端口和登錄名+密碼(我用這樣的密碼創建了這樣的用戶),grails會給我一個錯誤,該錯誤無法連接到mongodb。 這是mongodb在守護程序啟動時的日志:22:47:04 [initandlisten] MongoDB開始:pid = 918 port = 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
當我使用命令“ mongo”運行shell時,請嘗試執行以下操作:
>use covers
>db.cover.find()
我看到收藏中沒有任何東西。 但是當我查看db.cover.next_id.find()時,我看到的是23。所以好像id遞增了。 我不知道為什么對象沒有保存到mongodb。 為什么? 在我嘗試連接到mongodb並通過Java驅動程序進行保存並保存工作之前(因此mongodb似乎已正確安裝)。
另外,當我運行shell時,我會看到這樣的信息>“連接到:test”是什么意思? 我以前可以在哪里配置它? 可能是Shell連接到一個數據庫,而轉到另一個數據庫嗎?
對我來說,除非有一些約束錯誤,否則似乎可以毫無問題地進行保存...在保存/驗證后是否嘗試打印錯誤?
println cover.errors
您也可以嘗試從應用程序中恢復所有實例,而無需使用
println Cover.list()
如果在最后一行中可以看到已保存的實例,也許grails正在像在databaseName = db中一樣混合數據庫,然后您說應該將Cover保存到Cover數據庫
我發現了一個錯誤,對我來說,它發現src / groovy中的源必須以特定方式訪問grails源,因此要保存覆蓋范圍,我需要在grails中創建服務,我可以在其中實現實現保存方法,並將它們放在適當的位置我想打電話保存,我應該以這種方式獲得服務
def ctx = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT)
CoverService coverService = ctx.coverService
現在就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.