我的目标是连接我的heroku / mongolab数据库,但我不断收到此错误:
Mongo::OperationFailure at /mongotest/a/b
: need to login
file: networking.rb
location: send_message_with_gle
line: 89
我正在使用的代码是:
client = Mongo::MongoClient.from_uri(ENV['MONGOLAB_URI'])
db = client.db('test')
testcoll = db['testcoll']
testcoll.insert({:'_id' => "def", :'test' => "woop de doop"})
testcoll.find()
ENV['MONGOLAB_URI']=mongodb://heroku_app########:password@ds0xxxxx.mongolab.com:xxxxx/heroku_app########
我知道uri是正确的,包含用户名和密码,为什么会出错呢?此外,错误发生在insert()行,而不是我验证的行。
答案 0 :(得分:4)
Welp,结果是url将我连接到heroku_app########
数据库,但我正在尝试访问名为test
的数据库,所以显然我没有通过身份验证。本来不错的Mongo返回了一个错误,指出我已登录但未登录到正确的数据库。哦,好吧。
我没有足够重视uri的格式,这是
mongodb://username:password@host:port/database
数据库部分......非常重要,事实证明。
(我在编写测试时实际上找到了答案,但如果这个答案已经存在,那可能会让我节省大量的时间,所以我再写一遍并自己回答。)