sql >> Databáze >  >> NoSQL >> MongoDB

Připojení k MongoDB Atlas z funkcí firebase

Při připojování k Atlasu z Firebase Function existuje několik upozornění. Níže je uveden správný způsob, jak vrátit instanci připojeného klienta pro další použití ve vaší funkci 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
}

Vysvětlení:

  1. údajně se nemůžete připojit k Atlasu, pokud používáte Spark plán. Ujistěte se, že upgradujete na Blaze, pokud jste to ještě neudělali.

  2. uri řetězec – Při připojování k Atlasu z Firebase byste neměli používat zkrácený formát adresy URL. Z nějakého důvodu z firebase spolehlivě funguje pouze starší formát dlouhé adresy URL.

  3. client proměnná – Měli byste definovat client proměnnou mimo rozsah exportu a poté k ní přiřadit instanci připojeného klienta uvnitř funkce, pouze pokud ještě není přiřazena. To zabrání opětovnému připojení klienta při každém vyvolání funkce. Funkce Firebase jsou bezstavové , ale ne úplně. vypnou se pouze po určité době nečinnosti. To znamená, že připojení bude nějakou dobu přetrvávat. Z dokumentů :Pokud deklarujete proměnnou v globálním rozsahu, její hodnota může být znovu použita v následných vyvoláních, aniž by ji bylo nutné přepočítávat.



  1. MongoDB - jak vložit záznam pomocí funkce automatického přírůstku

  2. Přístup k MongoDB z Go

  3. (uzel:63208) Upozornění na zastaralost:collection.ensureIndex je zastaralá. Místo toho použijte createIndexes

  4. Najděte poslední záznam každého dne