我在 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-bit host=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 时,我会看到这样的信息 >connecting to: test what mean test? 我以前可以在哪里配置它?可能是 shell 连接到一个数据库而 grails 连接到另一个数据库?