長い検索でしたが、ようやく解決できました。私の最初の間違いは、ルートはhttpプロトコルのみを使用するため、データベースへの接続には適していないということでした。
今、私には2つのユースケースが残っています
- ローカルマシンで作業していて、後でOpenShiftにアップロードするコードをテストしたい
- そのコードをOpenShiftにデプロイします(同じプロジェクトにある必要がありますが、データベースとは異なるアプリです)
1。ローカルマシン
ルートが機能しないため、ポートフォワーディングが使用されます。私は以前にそれを読んだことがありますが、それが何を意味するのか本当に理解していませんでした(サービス自体はすでにポートを放棄していると思いました)。
ローカルマシンを使用している場合は、ocを使用して次のことを行います
oc port-forward <pod-name> <local-port>:<remote-port>
ポートが転送されたという情報が表示されます。これで、アプリでローカルホストに接続できるようになります(ローカルマシンでも)
2。 OpenShiftで実行されているアプリ
コードをOpenShiftにアップロードした後(私の場合は、プロジェクトに追加-> Node.js->リポジトリを追加)、ローカルホストは機能しなくなります。同じプロジェクトにいる限り、環境変数に多くの情報が含まれているので、データベースのサービスの名前(私の場合はmongodb)を確認するだけで、使用するホストとポートが見つかります
>概要
これは、OpenShiftと同様にローカルマシンでも機能する小さなコード例です。 OpenShiftにmongodbと呼ばれるpersistandMongoDBを設定しました。
コードはあまり機能しませんが、接続を確立し、接続したことを通知するので、機能していることがわかります。
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);
});