sql >> Databasteknik >  >> NoSQL >> MongoDB

Ansluter till MongoDB Atlas från firebase-funktioner

Det finns få förbehåll när du ansluter till Atlas från Firebase Function. Nedan är det korrekta sättet att returnera en ansluten klientinstans för vidare användning 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
}

Förklaring:

  1. enligt uppgift kan du inte ansluta till Atlas om du är på en Spark planen. Se till att du uppgraderar till Blaze om du inte har gjort det ännu.

  2. uri sträng – Du bör inte använda det förkortade url-formatet när du ansluter till Atlas från Firebase. Av någon anledning fungerar bara det äldre, långa url-formatet tillförlitligt från firebase.

  3. client variabel – Du bör definiera client variabel utanför exportomfånget, och tilldela sedan den anslutna klientinstansen till den inuti funktionen, endast om den inte redan är tilldelad. Detta kommer att förhindra att klienten återansluts vid varje funktionsanrop. Firebase-funktioner är tillståndslösa , men inte helt. de stängs bara av efter en period av inaktivitet. Det betyder att anslutningen kommer att bestå under en tid. Från dokument :Om du deklarerar en variabel i globalt omfång kan dess värde återanvändas i efterföljande anrop utan att behöva beräknas om.



  1. mongodb tillåter gästanslutning även när auth är aktiverat

  2. installera mongodb-10gen misslyckades med apt-get

  3. Hur slår man ihop flera fält i en samling?

  4. MongoDB $asinh