ठीक है, यह एक लंबी खोज थी और अंत में मैं इसे हल करने में सक्षम था। मेरी पहली गलती यह थी कि रूट डेटाबेस से जुड़ने के लिए उपयुक्त नहीं हैं क्योंकि वे केवल http-प्रोटोकॉल का उपयोग करते हैं।
अब मेरे लिए 2 यूज़केस बचे थे
- आप अपनी स्थानीय मशीन पर काम कर रहे हैं और उस कोड का परीक्षण करना चाहते हैं जिसे आप बाद में OpenShift पर अपलोड करते हैं
- आप उस कोड को OpenShift पर तैनात करते हैं (उसी प्रोजेक्ट में होना चाहिए लेकिन डेटाबेस से अलग ऐप है)
<मजबूत>1. स्थानीय मशीन
चूंकि मार्ग काम नहीं करता है इसलिए पोर्ट अग्रेषण का उपयोग किया जाता है। मैंने इसे पहले पढ़ा है, लेकिन वास्तव में इसका मतलब नहीं समझा (मैंने सोचा था कि सेवा पहले से ही बंदरगाहों को अग्रेषित कर रही है)।
जब आप अपनी स्थानीय मशीन पर हों तो आप महासागर के साथ निम्नलिखित कार्य करेंगे
oc port-forward <pod-name> <local-port>:<remote-port>
आपको जानकारी मिल जाएगी कि पोर्ट अग्रेषित किया गया है। अब बात यह है कि आपके ऐप में अब आप लोकलहोस्ट से कनेक्ट हो जाएंगे (यहां तक कि आपकी स्थानीय मशीन पर भी)
<मजबूत>2. ऐप ओपनशिफ्ट पर चल रहा है
जब आप अपना कोड OpenShift पर अपलोड करेंगे (मेरे मामले में, बस प्रोजेक्ट में जोड़ें -> Node.js -> अपना रेपो जोड़ें), लोकलहोस्ट अब और काम नहीं करेगा। मुझे यह समझने में थोड़ा समय लगा कि जैसे जब तक आप एक ही प्रोजेक्ट में हैं, आपके पास अपने पर्यावरण चर में बहुत सारी जानकारी होगी। तो बस अपने डेटाबेस की सेवा का नाम जांचें (मेरे मामले में मोंगोडब) और आपको होस्ट और पोर्ट का उपयोग करना होगा
सारांश
यहां एक छोटा कोड उदाहरण दिया गया है जो अब काम करता है, साथ ही स्थानीय मशीन पर ओपनशिफ्ट पर भी। मैंने पहले से ही ओपनशिफ्ट पर मोंगोडब नामक एक स्थायी और मोंगोडीबी स्थापित किया है।
कोड बहुत कुछ नहीं करता है, लेकिन यह एक कनेक्शन बनाएगा और आपको बताएगा कि उसने किया, इसलिए आप जानते हैं कि यह काम कर रहा है।
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);
});