फ़ायरबेस फ़ंक्शन से एटलस से कनेक्ट करते समय कुछ चेतावनी हैं। आपके FB फ़ंक्शन में आगे उपयोग के लिए कनेक्टेड क्लाइंट इंस्टेंस को वापस करने का सही तरीका नीचे दिया गया है:
import { MongoClient } from 'mongodb'
const uri = 'mongodb://<USER>:<PASSWORD>@foo-shard-00-00-xxx.gcp.mongodb.net:27017,foo-shard-00-01-xxx.gcp.mongodb.net:27017,foo-shard-00-02-xxx.gcp.mongodb.net:27017/test?ssl=true&replicaSet=FOO-shard-0&authSource=admin&retryWrites=true'
let client
export default async () => {
if (client && client.isConnected()) {
console.log('DB CLIENT ALREADY CONNECTED')
} else try {
client = await MongoClient.connect(uri, { useNewUrlParser: true })
console.log('DB CLIENT RECONNECTED')
}
catch (e) {
throw e
}
return client
}
स्पष्टीकरण:
-
कथित तौर पर, यदि आप स्पार्क . पर हैं तो आप एटलस से कनेक्ट नहीं हो सकते योजना। सुनिश्चित करें कि आपने ब्लेज़ में अपग्रेड किया है यदि आपने अभी तक नहीं किया है।
-
uri
स्ट्रिंग - Firebase से एटलस से कनेक्ट करते समय आपको संक्षिप्त यूआरएल प्रारूप का उपयोग नहीं करना चाहिए। किसी कारण से, केवल पुराना, लंबा यूआरएल प्रारूप फायरबेस से विश्वसनीय रूप से काम करता है। -
client
वेरिएबल – आपकोclient
. को परिभाषित करना चाहिए निर्यात क्षेत्र के बाहर चर, और उसके बाद कनेक्टेड क्लाइंट इंस्टेंस को फ़ंक्शन के अंदर असाइन करें, केवल तभी जब यह पहले से असाइन नहीं किया गया हो। यह प्रत्येक फ़ंक्शन आमंत्रण पर क्लाइंट को पुन:कनेक्ट करने से रोकेगा। Firebase फ़ंक्शन स्टेटलेस हैं , लेकिन पूरी तरह से नहीं। निष्क्रियता की कुछ अवधि के बाद ही वे बंद हो जाते हैं। इसका मतलब है कि कनेक्शन कुछ समय के लिए बना रहेगा। दस्तावेज़ों से :यदि आप वैश्विक दायरे में एक चर घोषित करते हैं, तो इसके मूल्य को पुन:गणना किए बिना बाद के आमंत्रणों में पुन:उपयोग किया जा सकता है।