Ok, to było długie poszukiwanie i wreszcie udało mi się go rozwiązać. Mój pierwszy błąd polegał na tym, że trasy nie nadają się do nawiązywania połączenia z bazą danych, ponieważ używają tylko protokołu http.
Teraz pozostały mi 2 przypadki użycia
- Pracujesz na swoim lokalnym komputerze i chcesz przetestować kod, który później prześlesz do OpenShift
- Wdrażasz ten kod w OpenShift (musi być w tym samym projekcie, ale jest to inna aplikacja niż baza danych)
1. Komputer lokalny
Ponieważ trasa nie działa, używane jest przekierowanie portów. Czytałem to wcześniej, ale tak naprawdę nie rozumiałem, co to znaczy (myślałem, że sama usługa już przekierowuje porty).
Kiedy jesteś na swoim lokalnym komputerze, wykonasz następujące czynności za pomocą oc
oc port-forward <pod-name> <local-port>:<remote-port>
Otrzymasz informację, że port jest przekierowany. Teraz chodzi o to, że w Twojej aplikacji połączysz się teraz z hostem lokalnym (nawet na komputerze lokalnym)
2. Aplikacja działająca na OpenShift
Po przesłaniu kodu do OpenShift (w moim przypadku po prostu Dodaj do projektu --> Node.js --> Dodaj swoje repozytorium), localhost przestanie działać. tak długo, jak jesteś w tym samym projekcie, będziesz mieć wiele informacji w zmiennych środowiskowych. Więc po prostu sprawdź nazwę usługi swojej bazy danych (w moim przypadku mongodb), a znajdziesz hosta i port do użycia
Podsumowanie
Oto mały przykład kodu, który działa teraz, zarówno na komputerze lokalnym, jak i na OpenShift. Skonfigurowałem już persistand MongoDB na OpenShift o nazwie mongodb.
Kod nie robi wiele, ale nawiąże połączenie i powie Ci, że tak, więc wiesz, że działa.
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);
});