Jak obsłużyć błąd w połączeniu do bazy danych?

0

Cześć.
Mam aplikacje która łączy się z bazą danych mongo.
Mogłaby działać bez tego połączenia (w przypadku błędu) ale nie potrafię nad tym zapanować.

async function run() {
    try {
        // Connect the client to the server (optional starting in v4.7)
        await client.connect();

        // Send a ping to confirm a successful connection
        await client.db("admin").command({ ping: 1 });
        await client.db('database').collection('someCollection').createIndex({ word: 1 })
        console.log("Pinged your deployment. You successfully connected to MongoDB!");
    } catch {
        console.log('Something went wront while connecting to database')
    } finally {
        // Ensures that the client will close when you finish/error
        await client.close();
    }
}
run()

async function getInfoFromDatabase(input) {
    await client.connect();
    const response = await client.db('database').collection('someCollection').findOne({ input });
    await client.close();
    return response;
}

...

server.use((error, req, res, next) => {
    res.send('<h1>Error happend</h1><p>' + error + '</p>')
})

Zapytanie getInfoFromDatabase czeka długo a później klient dostaje generyczną odpowiedź "Error happend".
Chciałbym żeby przy oczekiwaniu na odpowiedź z bazy dłuższym niż 3 sekundy klient dostawał już jakąś odpowiedź
W jaki sposób mogę sprawić żeby brak połączenia z bazą nie blokował aplikacji?

1

Timout wprowadz

EDIT: Bynajmniej nie mam na mysli setTimeout bo ta funkcja w cywilizowanym jezyku by sie nazywala sleep albo delayed

0

To jak apka może działać bez bazy danych to ja bym zrobił tak, że asynchronicznie opalił połączenie do bazy danych i do momentu jego nawiązania działa tak jakby tej bazy nie było. W momencie, kiedy dostaniesz połączenie działasz z bazą, jak nie dostaniesz połączenia to pokazać użytkownikowi jakiegoś jakieś info, że działa w trybie bez zapisu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1