Асинхронное ожидание mysql2/ обещание и окончание соединения

Попытка разработки REST API в Node.Js с использованием базы данных MySQL. Не могли бы вы помочь мне написать лучший код?

Два самых важных вопроса здесь,

1 - How we can take the createConnection logic out of userModel.js?
2 - Shall I end the connection on every API call?

Предсказанный ответ

    filename : db.js
    const mysql = require('mysql2/promise');
    module.exports = async function(){
        return await mysql.createConnection({host:'localhost', user: 'user', password:'pass', database: 'database'});
    }

and in userModel.js 
const mysql = require('db.js');

module.exports.getProfile(user_id){
   try{
        const [rows, fields] = await db.execute('SELECT * FROM `table` WHERE `user_id` = ?', [1]);
        console.log(rows);
    }catch(err){
        console.log(err);
    }

    await db.end();
}

Приведенная выше реализация кода приведет к ошибкам. Если мы попытаемся снова нажать API, "{Ошибка: невозможно добавить новую команду, когда соединение находится в закрытом состоянии в PromiseConnection.execute"

Возможно, если использовать этот нижеприведенный подход, который кажется глупым, мы можем снова вызвать тот же API n без какой-либо ошибки.

Также в userModel.js есть много функций, и в этом случае мы должны создавать и завершать соединение с каждым методом API.

userModel.js

const mysql = require('mysql2/promise');
const db = await mysql.createConnection({host:'localhost', user: 'user', password:'pass', database: 'database'});

    try{
        const [rows, fields] = await db.execute('SELECT * FROM `table` WHERE `user_id` = ?', [1]);
        console.log(rows);
    }catch(err){
        console.log(err);
    }

    await db.end();

Любой совет будет полезен. С Уважением,

1 ответ

  1. Соединение может быть установлено при запуске вашего сервера. Вы должны поместить этот код в файл, где вы запускаете сервер.

  2. Создание соединений может быть дорогим и может повлиять на производительность вашего приложения. Вы должны использовать пулы соединений

С другой стороны, не стоит жестко кодировать параметры для подключения к базе данных. Вы должны сохранить файл конфигурации, из которого эти значения могут быть прочитаны в зависимости от среды.

Другие вопросы по тегам