Я запускаю приложение express, в котором я хочу инициализировать / открыть соединение с БД перед тем, как начать прослушивать порт.
сервер. js:
const express = require('express');
const morgan = require('morgan');
const db = require('./database/dbUtils');
db.init();
const app = express();
...
app.listen(PORT, () => console.log(`Server running on port ${PORT}.`));
Затем я подумал, что я могу использовать это соединение в моей модели для выполнения операций CRUD. Например, у меня есть модель User, которая может создать пользователя.
user. js:
const db = require('./database/dbUtils');
async function createUser(user) {
await db.exec("INSERT INTO users ...");
}
Как экспортировать соединение? Я знаю, что экспорт выполняется синхронно, поэтому напрямую экспортировать БД невозможно. Как это сделать обычным способом (обещание и / или обратный вызов)?
dbUtils. js:
const sqlite = require('sqlite3');
const sql = require('sqlite');
async function init() {
try {
return await sql.open({
filename: './database/database.db',
driver: sqlite.Database
});
} catch (e) {
console.error(e);
}
}
module.exports = init();
Обратите внимание, что в этом случае dbUtils.js
не будет работать, так как он экспортирует asyn c. Даже если это сработало, оно создает новое соединение каждый раз, когда импортируется.