Как соглашение на базу данных, которая в aws с express

я новый в backend с nodejs и express, реализую API REST с express как сервер и язык typescript, тема состоит в том, что я хочу присоединить мой сервер к базе данных, mysql/mariadb, что находится в инстанции aws, я это сделал:

import { createPool } from 'mysql2';
  export async function conectar() {
      const conectando = await createPool({
          host:'myIPInstance',
          port: 3306,
          user:'myuser',
          password:'mypass',
          database:'example',
          connectionLimit: 10
      });
      return conectando;
  }

но встречается эта ошибка:

introducir la descripción de la imagen aquí

Они могли бы говорить мне, что я врежу, я надеюсь, что они помогают мне. Уже конфигурируйте security group для того, чтобы открыл порт 3306: MYSQL/Aurora TCP 3306 0.0.0.0/0 – EMisaelG 1 min ago Эдит Делете

Обновление **** Изменилось: host: 'myIpIntance' из-за host: ' Public DNS (IPv4)' моей инстанции и нарушает эта ошибка:

introducir la descripción de la imagen aquí

1
задан 08.11.2019, 07:46
2 ответа

Сообщения ошибки достаточно especГ-fico: (traducciГіn собственная)

Ошибка: ты попробовал звонить .then (), .catch () или призвал await в результате консультации, которая не обещание, что ошибка programaciГіn.

, Сказанные это, ошибка ты это совершаешь, когда пробует использовать await в одном mГ©todo, что не возвращает обещание.

documentaciГіn librerГ, - имеет следующее по отношению к mysql2:

MySQL2 tambiГ©n поставляет один mГ©todo .promise() на Pools, для того, чтобы ты смог создавать связи, основанные или нет на Обещаниях, используя того же самого Pool.

Следовательно, podrГ-схвати экспортировать только объект pool в тебе mГіdulo conexiГіn:

import { createPool } from 'mysql2';

const pool = createPool({
  host:'myIPInstance',
  port: 3306,
  user:'myuser',
  password:'mypass',
  database:'example',
  connectionLimit: 10
});

export default pool;

Потом, в любом из них mГіdulos, где использовал ты conexiГіn pool podrГЎs делать это используя await, если выполняются следующие 2 условия:

  1. выполняет внутри одной funciГіn async.
  2. Ты Создаешь инстанцию объекта pool используя mГ©todo promise().

Например:

import pool from './connectPool'; // <- nombre del módulo que creamos anteriormente

const main = async () => {
  const promisePool = pool.promise(); // ahora promisePool devuelve promesas, puedo usar await
  try{
    const[rows, fields] = await promisePool.query('SELECT 1');
    console.log(rows);
    console.log(fields);
  } catch(e) {
    console.log(e.message);
  }
  promisePool.end(); // <- cierra todas las conexiones a la DB
}
// llamamos a la función para que se ejecute
main();

Эта serГ - в способ добиваться того, что ты предлагаешь себе, существуют многие другие и все dependerГЎn, которого ты пробуешь помогать. Я выставляю эту soluciГіn, чтобы ошибка тебе объясняет, что estГЎ производя ты cГіdigo настоящий.

Замечает

Помнит, что каждый раз aque ты работал с Обещаниями или с async/await, ты должен использовать блоки try catch, как я использую их в моем примере. Это что-то, что забывает нам часто, но это важно, чтобы отлаживать ошибки и избегать того, чтобы наша aplicaciГіn он перенес непредвиденную неудачу.

0
ответ дан 01.12.2019, 12:16

security group, возможно, что твой ip динамический, следовательно ты был бы должен, если ты только делаешь доказательства, мог бы открывать BD для любого IP, если это не случай, я думаю, что ты пробуешь сделать пул связей или сходно, если это сервер бесплатного слоя AWS не, если у него есть какая-то, limitaciГіn, deberГ-схвати проверять ее у них могут быть некие ограничения

0
ответ дан 01.12.2019, 12:16
  • 1
    SkyZero, спасибо за комментирование. ip не diná слюда, уже у него есть Ваш elastic ip. – EMisaelG 08.11.2019, 07:34