Aqui está o meu código:
mongoose.connect(consts.database, {
useNewUrlParser: true,
useUnifiedTopology: true,
sslCA: consts.databaseCert,
});
//...
const user = await db.userModel.findOne({
username: usernameLowerCase
}).exec();
Aqui está minha string de conexão do banco de dados (anônima):
mongodb://myUser:[email protected]:27017,SG-staging-43334.servers.mongodirector.com:27017?replicaSet=RS-staging-0&ssl=true&authSource=stagingDB
Estou recebendo este erro:
MongoError: not authorized on test to execute command {
find: "users",
filter: {
username: "bob"
},
projection: {},
limit: 1,
singleBatch: true,
batchSize: 1,
returnKey: false,
showRecordId: false,
lsid: {
id: UUID("0a9400e3-83e3-429c-b8c9-92ade2ff210e")
},
$clusterTime: {
clusterTime: Timestamp(1613200171, 1),
signature: {
hash: BinData(0, FED473B580D13E7E5073756DB5140981AADB2985),
keyId: 6928615819992774977
}
},
$db: "test"
}
Informações do usuário do banco de dados:
myUser [{"role":"readWrite","db":"stagingDB"}]
Não tenho ideia de por que estou recebendo esse erro not authorized on test to execute command
e, na string de retorno $db: "test"
, nem tenho um banco de dados chamado test
. O que eu poderia estar fazendo de errado? Eu adicionei recentemente este novo usuário myUser
, mas agora estou recebendo este erro. Este erro significa que o usuário não está autorizado a "testar" comandos? Ou significa que estou tentando (de alguma forma) me conectar a um banco de dados chamado "teste"?
Acontece que estava faltando um
/authDBName
na minha string de conexão. Deve ser isso: