Применение лучших практик для создания файла js для доступа к данным в приложении узла - PullRequest
0 голосов
/ 10 марта 2020

Я создал файл, который собираюсь использовать для хранения только доступа к данным внутри:

    const sql = require('mssql');

        async function getUsers(config) {
          try {
            let pool = await sql.connect(config);

            return await pool.request().query('select * from someTable');
          } catch (err) {}
        }

        async function getRoles(config) { ...
        async function updateUser(config) { ...

module.export([
  getUsers,
  getRoles,
  updateUser
])

Все эти функции находятся в одном файле js, и вы можете видеть, что каждая функция получает объект конфигурации в качестве параметра. Я пытаюсь избежать этого и иметь один бассейн. Но этот файл не является классом, у него нет конструктора или init. И это aws лямбда-проект в индексе. js Я получаю данные конфигурации, поэтому я передаю конфигурацию каждой функции. Как я могу сделать этот файл, чтобы я мог пройти конфигурацию один раз и убедиться, что соединения закрыты? Я запутался в том, как организовать этот файл, используя лучшие рекомендации.

1 Ответ

0 голосов
/ 10 марта 2020

Поскольку все эти функции находятся в одном классе JS и используют один и тот же клиентский объект SQL, вы можете просто создать экземпляр клиента sql вне функций, а с помощью замыканий ваши функции могут получить доступ к этому sql client.

Например:

    // sql_scripts.js
    const sql = require('mssql');

 const sql_client = async (config) => {
    const _sql_client = await sql.connect(config);

    const getUsers = async () => { 
      try {
           const res =  await _sql_client.request().query('select * from someTable');
           _sql_client.close_connection() // always run a close connection
          return res
      } catch (err) {}
        function
     }

    const getRoles = async () => {
    ....
    }
}

module.exports = sql_client

Затем вы можете создать экземпляр sql_client с помощью вызова:

const my_sql_client = sql_client(config)

my_sql_client.getUsers();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...