Ok, è stata una lunga ricerca e finalmente sono riuscito a risolverlo. Il mio primo errore è stato che i percorsi non sono adatti per stabilire una connessione a un database poiché utilizzano solo il protocollo http.
Ora c'erano 2 casi d'uso rimasti per me
- Stai lavorando sul tuo computer locale e vuoi testare il codice che successivamente caricherai su OpenShift
- Distribuisci quel codice su OpenShift (deve essere nello stesso progetto ma è un'app diversa dal database)
Poiché il percorso non funziona, viene utilizzato il port forwarding. L'ho già letto in precedenza, ma non capivo davvero cosa significasse (pensavo che il servizio stesso stesse già inoltrando le porte).
Quando sei sul tuo computer locale, esegui le seguenti operazioni con oc
oc port-forward <pod-name> <local-port>:<remote-port>
Riceverai le informazioni che la porta è stata inoltrata. Ora il fatto è che nella tua app ora ti connetterai a localhost (anche sul tuo computer locale)
Dopo aver caricato il tuo codice su OpenShift (nel mio caso, aggiungi solo al progetto --> Node.js --> Aggiungi il tuo repository), localhost non funzionerà più. Quello che mi ci è voluto del tempo per capire è che come fintanto che sei nello stesso progetto avrai molte informazioni nelle tue variabili d'ambiente. Quindi controlla il nome del servizio del tuo database (nel mio caso mongodb) e troverai l'host e la porta da usare
Riepilogo
Ecco un piccolo esempio di codice che funziona ora, sia sulla macchina locale che su OpenShift. Ho già impostato un persistand MongoDB su OpenShift chiamato mongodb.
Il codice non fa molto, ma stabilirà una connessione e ti dirà che lo ha fatto, quindi sai che sta funzionando.
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);
});