sql >> データベース >  >> NoSQL >> MongoDB

Firebase関数からMongoDBAtlasに接続する

    FirebaseFunctionからAtlasに接続する際の注意点はほとんどありません。以下は、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
    }
    

    説明:

    1. 伝えられるところによると、 Spark を使用している場合、Atlasに接続することはできません。 予定。まだアップグレードしていない場合は、必ずBlazeにアップグレードしてください。

    2. uri 文字列– FirebaseからAtlasに接続する場合は、短縮URL形式を使用しないでください。何らかの理由で、Firebaseから確実に機能するのは古い長いURL形式のみです。

    3. クライアント 変数–クライアントを定義する必要があります エクスポートスコープ外の変数を作成し、接続されたクライアントインスタンスを、まだ割り当てられていない場合にのみ、関数内で割り当てます。これにより、関数を呼び出すたびにクライアントに再接続できなくなります。 Firebase関数はステートレスです 、しかし完全ではありません。それらは、一定期間非アクティブになった後にのみシャットダウンされます。これは、接続がしばらく続くことを意味します。 ドキュメントから :グローバルスコープで変数を宣言すると、その値を再計算しなくても、後続の呼び出しで再利用できます。



    1. Redisトランザクションと長時間実行されるLuaスクリプト

    2. nodejs-mongodbミドルウェアの構文がmongoシェルと異なるのはなぜですか?

    3. Mongoは、フィールドに基づいてオブジェクトの配列内の重複を削除します

    4. Redisは大きな文字列を取得するのに時間がかかります