Ok dat was een lange zoektocht en uiteindelijk heb ik het kunnen oplossen. Mijn eerste fout was dat routes niet geschikt zijn om verbinding te maken met een database omdat ze alleen het http-protocol gebruiken.
Nu waren er nog 2 usecases voor mij
- U werkt op uw lokale computer en wilt code testen die u later uploadt naar OpenShift
- Je implementeert die code in OpenShift (moet in hetzelfde project zitten, maar is een andere app dan de database)
Omdat de route niet werkt, wordt port forwarding gebruikt. Ik heb dat eerder gelezen, maar begreep niet echt wat het betekende (ik dacht dat de service zelf al poorten doorstuurt).
Als u zich op uw lokale computer bevindt, doet u het volgende met de oc
oc port-forward <pod-name> <local-port>:<remote-port>
U krijgt de informatie dat de poort wordt doorgestuurd. Nu is het zo dat je in je app nu verbinding maakt met localhost (zelfs op je lokale computer)
Nadat je je code hebt geüpload naar OpenShift (in mijn geval gewoon Toevoegen aan project -> Node.js -> Voeg je repo toe), zal localhost niet langer werken. Wat een tijdje duurde voordat ik het begreep, is dat als zolang je in hetzelfde project zit, heb je veel informatie in je omgevingsvariabelen. Dus controleer gewoon de naam van de service van je database (in mijn geval mongodb) en je zult de host en poort vinden die je moet gebruiken
Samenvatting
Hier is een klein codevoorbeeld dat nu werkt, zowel op de lokale machine als op OpenShift. Ik heb al een persistand MongoDB opgezet op OpenShift genaamd mongodb.
De code doet niet veel, maar het zal een verbinding maken en je vertellen dat het deed, zodat je weet dat het werkt.
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);
});