【发布时间】:2018-08-30 12:56:00
【问题描述】:
我正在尝试将根对象(MyDocument)保存到启用身份验证的 mongoDB 和由 3 个节点组成的 ReplicaSet(插入 mongoUrls)
通过此调用:
(VOMongoRepository
mongoUrls: {'127.0.0.1:27017' . '127.0.0.1:27018' . '127.0.0.1:27019'}
database: 'myDB'
username: 'myUser'
password: 'myPass') enableReplication
我收到一个 VOMongoConnectionError 没有任何更深入的信息。
尝试与此相同:
VOMongoRepository
mongoUrls: {'myUser:myPass@127.0.0.1:27017/?replicaSet=myRepl' }
database: 'myDB'
然后我收到一个 VOMongoError“未授权查询 myDB.MyDocument”
使用 mongo 客户端和 Compass 双重检查凭据,还有读/写权限(实际上角色是 dbOwner)。
有趣的是,我的 testDocumentLifeCycle 能够创建对象并发送要保存的消息,该消息返回时不会发出错误信号,尽管它不会在 MongoDB 中创建文档。但是 selectOne: 然后返回 VOMongoError:
| doc |
MyDocument new
identity: 'me@there.com';
save.
user := MyDocument selectOne: [ :each | each identity = 'me@there.com'].
顺便提一下:上面对 MyDocument 类的测试确实适用于没有启用身份验证的独立 mongod。唯一改变的是存储库。
那我做错了什么?
【问题讨论】:
-
您究竟是如何“使用 mongo 客户端和 Compass 双重检查凭据,以及读/写权限(实际上角色是 dbOwner)。”?你能用这些信息更新问题吗?
-
我检查了凭据是否有效。为此,我使用了 mongo 和 compass。
-
好的。例如,我的猜测是编码有问题。你检查过吗? wireshark 实际发送的是什么?