Ok det var en lång sökning och till slut kunde jag lösa det. Mitt första misstag var att rutter inte är lämpade för att göra en anslutning till en databas eftersom de bara använder http-protokollet.
Nu fanns det 2 användningsfall kvar för mig
- Du arbetar på din lokala dator och vill testa kod som du senare laddar upp till OpenShift
- Du distribuerar den koden till OpenShift (måste vara i samma projekt men är en annan app än databasen)
1. Lokal maskin
Eftersom rutten inte fungerar används portvidarebefordran. Jag har läst det förut men förstod inte riktigt vad det betydde (jag trodde att själva tjänsten redan vidarebefordrar portar).
När du är på din lokala dator kommer du att göra följande med oc
oc port-forward <pod-name> <local-port>:<remote-port>
Du får information om att porten vidarebefordras. Nu är saken den att i din app kommer du nu att ansluta till localhost (även på din lokala dator)
2. App som körs på OpenShift
När du har laddat upp din kod till OpenShift (i mitt fall, bara Lägg till i projekt --> Node.js --> Lägg till ditt repo), kommer localhost inte att fungera längre. Det som tog ett tag för mig att förstå är att som så länge du är i samma projekt kommer du att ha mycket information i dina miljövariabler. Så kolla bara namnet på tjänsten i din databas (i mitt fall mongodb) så hittar du värden och porten som ska användas
Sammanfattning
Här är ett litet kodexempel som fungerar nu, såväl på den lokala maskinen som på OpenShift. Jag har redan satt upp en persistand MongoDB på OpenShift som heter mongodb.
Koden gör inte mycket, men den kommer att skapa en anslutning och berätta att den gjorde det, så att du vet att den fungerar.
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);
});