sql >> Database teknologi >  >> NoSQL >> MongoDB

Opretter forbindelse til MongoDB Atlas fra firebase-funktioner

Der er få forbehold, når du opretter forbindelse til Atlas fra Firebase Function. Nedenfor er den korrekte måde at returnere en tilsluttet klientforekomst til videre brug i din FB-funktion:

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
}

Forklaring:

  1. efter sigende kan du ikke oprette forbindelse til Atlas, hvis du er på en Spark plan. Sørg for at opgradere til Blaze, hvis du ikke har gjort det endnu.

  2. uri streng – Du bør ikke bruge det forkortede url-format, når du opretter forbindelse til Atlas fra Firebase. Af en eller anden grund virker kun det ældre, lange url-format pålideligt fra firebase.

  3. client variabel – Du bør definere client variabel uden for eksportområdet, og tildel derefter den tilsluttede klientinstans til den inde i funktionen, hvis den ikke allerede er tildelt. Dette vil forhindre gentilslutning af klienten ved hver funktionsindkaldelse. Firebase-funktioner er statsløse , men ikke helt. de bliver først lukket ned efter en periode med inaktivitet. Det betyder, at forbindelsen vil vare i nogen tid. Fra dokumenter :Hvis du erklærer en variabel i globalt omfang, kan dens værdi genbruges i efterfølgende kald uden at skulle genberegnes.



  1. tilføje bruger til mongodb via python

  2. Sådan installeres Apache CouchDB 2.3.0 i Linux

  3. Ignorer MongoDB socket-forbindelse på Spring Test

  4. mongodb mongoose enhed af maxDistance