Для того чтобы подождать подключения к базе данных перед запуском сервера Express, вы можете использовать асинхронные функции в JavaScript. Например, если вы используете `node-postgres` (pg) для подключения к PostgreSQL, ваш код может выглядеть примерно так:
```javascript
const express = require('express');
const { Pool } = require('pg');
const pool = new Pool({
user: 'your_user',
host: 'localhost',
database: 'your_database',
password: 'your_password',
port: 5432,
});
const app = express();
const port = 3000;
async function startServer() {
try {
// Подключаемся к БД
await pool.connect();
console.log('Подключение к базе данных успешно установлено.');
// Запускаем сервер, если подключение к БД успешно
app.listen(port, () => {
console.log(`Сервер запущен на http://localhost:${port}`);
});
} catch (error) {
console.error('Ошибка при подключении к базе данных:', error);
process.exit(-1); // Завершаем процесс в случае ошибки
}
}
startServer();
// Определяем роуты после этого, например:
app.get('/', (req, res) => {
res.send('Главная страница');
});
// и т.д.
```
В этом примере функция `startServer` пытается установить соединение с базой данных с помощью асинхронной функции `connect`. Если соединение установлено успешно, сервер Express запускается методом `listen`. Если возникает ошибка при подключении к базе данных, сервер не запустится, а в консоль будет выведено сообщение об ошибке.
Обратите внимание на то, что метод `connect` из `node-postgres` нужен только для проверки соединения, и его необязательно вызывать при каждом запросе в вашем приложении, так как `pool` будет управлять соединениями автоматически.
Запускайте ваш сервер Express только после того, как убедитесь, что соединение с базой данных было установлено без ошибок. Это поможет избежать ситуаций, когда сервер будет принимать запросы, не имея возможности выполнять операции с базой данных.