Как создать несколько сессий базы данных в NodeJS - PullRequest
0 голосов
/ 13 марта 2020

Я создаю бэкэнд-API с использованием Serverless Framework, в котором я использую Nodejs с Sequelize. Мой диалект postgresql. Мне нужно взаимодействовать с двумя базами данных одновременно и поддерживать сеанс.

Что я делаю, так это Моя структура папок

  • Репо
    • база данных 1
      • модель1. js
    • база данных 2
      • модель2. js
  const db = {};
  const DBs = DB_NAME.split(',');
  console.log(DB_NAME);
  console.log(DBs);
  for(let i = 0; i < DBs.length; ++i) {
    let database = DBs[i];
    //Store the database connection in our db object
    db[database] = new Sequelize(database, DB_USERNAME, DB_PASSWORD, {
      host: DB_HOSTNAME,
      port: DB_PORT,
      dialect: DB_DIALECT,
      pool: {
        max: 10,
        min: 1,
        idle: 20000,
        acquire: 20000,
      },
      define: {
        underscored: true,
        timestamps: true,
        paranoid: true,
      },
    });
}

работает нормально. но когда я пытаюсь добавить модели

fs
    .readdirSync(__dirname + '/product')
    .filter(file =>
        (file.indexOf('.') !== 0) &&
        (file !== basename) &&
        (file.slice(-3) === '.js'))
    .forEach(file => {
        const model = db.product.import(path.join(__dirname + '/product', file));
        db.[model.name] = model;
    });


// Add models from database2 folder

fs
    .readdirSync(__dirname + '/painted')
    .filter(file =>
        (file.indexOf('.') !== 0) &&
        (file !== basename) &&
        (file.slice(-3) === '.js'))
    .forEach(file => {
        const model = db.painted.import(path.join(__dirname + '/painted', file));
        db.[model.name] = model;
    });

Это выше дает ошибку, что импорт не является функцией undefined

Может кто-нибудь, пожалуйста, помогите мне в этом

1 Ответ

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

Я делал ошибку при добавлении модели в объект db.

Вместо

db.[model.name] = model;

Мне нужно было сделать

db.painted.[model.name] = model;

и

db.product.[model.name] = model;

соответственно.

все работает отлично. Я могу поддерживать два сеанса на каждый вызов API

...