O Mongoose pode fazer a autenticação de 2 maneiras:
1, Cadeia de conexão:
mongoose.connect('mongodb://username:[email protected]:port(usually 27017)/db')
Onde nome de usuário e senha são os respectivos nome de usuário e senha para esse banco de dados específico, host seria o host em que seu banco de dados está hospedado (portanto, localhost ou algum domínio/IP), porta é a porta que o mongo escuta e db é o nome do db ao qual você deseja se conectar 2, usando opções. Dos documentos:
var options = {
useMongoClinet: true,
auth: {authdb: 'admin'},
user: 'myUsername',
pass: 'myPassword',
}
mongoose.connect(uri, options);
Eu também enfrentei o erro 'username undefined' na primeira abordagem, mas consegui na segunda abordagem.
[Referência] https://github.com/Automattic/mongoose/issues/4891