Добре, това беше дълго търсене и най-накрая успях да го реша. Първата ми грешка беше, че маршрутите не са подходящи за осъществяване на връзка с база данни, тъй като използват само http-протокола.
Сега ми останаха 2 случая на използване
- Работите на вашата локална машина и искате да тествате код, който по-късно да качите в OpenShift
- Вие внедрявате този код в OpenShift (трябва да е в същия проект, но е различно приложение от базата данни)
1. Локална машина
Тъй като маршрутът не работи, използва се пренасочване на портове. Четох това преди, но не разбрах какво означава (мислех, че самата услуга вече препраща портове).
Когато сте на вашата локална машина, ще направите следното с oc
oc port-forward <pod-name> <local-port>:<remote-port>
Ще получите информация, че портът е пренасочен. Сега работата е там, че във вашето приложение вече ще се свързвате с localhost (дори на вашата локална машина)
2. Приложение, работещо на OpenShift
След като качите кода си в OpenShift (в моя случай просто добавете към проекта --> Node.js --> добавете вашето репо), localhost няма да работи повече. Това, което ми отне известно време, за да разбера, е, че като докато сте в един и същ проект, ще имате много информация в променливите на вашата среда. Така че просто проверете името на услугата на вашата база данни (в моя случай mongodb) и ще намерите хоста и порта, които да използвате
Резюме
Ето малък примерен код, който работи сега, както на локалната машина, така и на OpenShift. Вече настроих постоянен MongoDB на OpenShift, наречен mongodb.
Кодът не прави много, но ще направи връзка и ще ви каже, че го е направила, така че да знаете, че работи.
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);
});