VOMongoRepository 无法使用用户凭据 (Pharo/Voyage) 连接到 MongoDB 副本集

VOMongoRepository fails to connect to MongoDB replicaset with user credentials (Pharo/Voyage)

我正在尝试将根对象 (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 "not authorized for Query on myDB.MyDocument"

使用 mongo 客户端和 Compass 双重检查凭据,还有 read/write 权限(实际上角色是 dbOwner)。

有趣的是,我的 testDocumentLifeCycle 能够创建对象并发送消息进行保存,returns 而不会发出错误信号,尽管它不会在 MongoDB 中创建文档。但是 selectOne: 然后返回 VOMongoError:

| doc | MyDocument new identity: 'me@there.com'; save. user := MyDocument selectOne: [ :each | each identity = 'me@there.com'].

顺便提一下:上面对 MyDocument class 的测试确实可以在未启用身份验证的情况下使用独立的 mongod。唯一改变的是存储库。

那我做错了什么?

实际上VoyageMongo的replicaSet部分有一个bug。它没有使用提供的凭据。它已发布在 https://github.com/pharo-nosql/voyage/issues/104