Ok, foi uma longa pesquisa e finalmente consegui resolver. Meu primeiro erro foi que as rotas não são adequadas para fazer uma conexão com um banco de dados, pois usam apenas o protocolo http.
Agora havia 2 casos de uso restantes para mim
- Você está trabalhando em sua máquina local e deseja testar o código que será enviado posteriormente para o OpenShift
- Você implanta esse código no OpenShift (precisa estar no mesmo projeto, mas é um aplicativo diferente do banco de dados)
1. Máquina local
Como a rota não funciona, o encaminhamento de porta é usado. Eu li isso antes, mas realmente não entendi o que significava (pensei que o próprio serviço já está encaminhando portas).
Quando você estiver em sua máquina local, você fará o seguinte com o oc
oc port-forward <pod-name> <local-port>:<remote-port>
Você obterá a informação de que a porta foi encaminhada. Agora, o problema é que, em seu aplicativo, você agora se conectará ao localhost (mesmo em sua máquina local)
2. Aplicativo rodando no OpenShift
Depois de fazer o upload do seu código para o OpenShift (no meu caso, apenas Add to project --> Node.js --> Add your repo), localhost não funcionará mais. desde que você esteja no mesmo projeto você terá muitas informações em suas variáveis de ambiente. Então, basta verificar o nome do serviço do seu banco de dados (no meu caso mongodb) e você encontrará o host e a porta para usar
Resumo
Aqui está um pequeno exemplo de código que funciona agora, tanto na máquina local quanto no OpenShift. Já configurei um persistente e MongoDB no OpenShift chamado mongodb.
O código não faz muito, mas fará uma conexão e lhe dirá que fez, então você sabe que está funcionando.
var mongoose = require('mongoose');
// Connect to Mongodb
var username = process.env.MONGO_DB_USERNAME || 'someUserName';
var password = process.env.MONGO_DB_PASSWORD || 'somePassword';
var host = process.env.MONGODB_SERVICE_HOST || '127.0.0.1';
var port = process.env.MONGODB_SERVICE_PORT || '27017';
var database = process.env.MONGO_DB_DATABASE || 'sampledb';
console.log('---DATABASE PARAMETERS---');
console.log('Host: ' + host);
console.log('Port: ' + port);
console.log('Username: ' + username);
console.log('Password: ' + password);
console.log('Database: ' + database);
var connectionString = 'mongodb://' + username + ':' + password +'@' + host + ':' + port + '/' + database;
console.log('---CONNECTING TO---');
console.log(connectionString);
mongoose.connect(connectionString);
mongoose.connection.once('open', (data) => {
console.log('Connection has been made');
console.log(data);
});