Экспресс-ожидание подключения к базе данных - PullRequest
0 голосов
/ 10 октября 2018

Я просматриваю соответствующий пост здесь

Я борюсь с ожиданием импорта модуля из моего экспресс-приложения.

Я понимаю, что для использования await он должен быть заключен в асинхронную функцию.Однако я не могу обернуть всю мою программу узла в асинхронную функцию, потому что она будет завершена без каких-либо полезных действий.

Как правильно ожидать подключения к базе данных?

узел / экспресс:

require('dotenv').config();
var express = require('express');
var loginRouter = require('./routes/login/login');
var app = express();

async() => {
    const { client } = await require('./db/db');
    app.use('/login', loginRouter);
    app.set('port', process.env.PORT || 3000);
    app.listen(app.get('port'));
    console.log('Server listening on port ' + app.get('port'));
}

дБ модуль:

const { Client } = require('pg');

module.exports = (async() => {
    const client = new Client();
    await client.connect();
    return { client };
})();

1 Ответ

0 голосов
/ 10 октября 2018

Одним из вариантов может быть экспорт Promise, который разрешается в подключен client.Затем, когда вы импортируете его, вызовите .then на импортированном Promise, чтобы получить к подключенному клиенту:

const { Client } = require('pg');

const client = new Client();
module.exports = {
  clientProm: client.connect().then(() => client)
};

И:

const { clientProm } = require('./db/db');
clientProm.then((client) => {
  // do stuff with connected client
});
...