я новый в 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;
}
но встречается эта ошибка:
Они могли бы говорить мне, что я врежу, я надеюсь, что они помогают мне. Уже конфигурируйте security group для того, чтобы открыл порт 3306: MYSQL/Aurora TCP 3306 0.0.0.0/0 – EMisaelG 1 min ago Эдит Делете
Обновление **** Изменилось: host: 'myIpIntance' из-за host: ' Public DNS (IPv4)' моей инстанции и нарушает эта ошибка:
Сообщения ошибки достаточно 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 условия:
async
. 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 он перенес непредвиденную неудачу.
security group, возможно, что твой ip динамический, следовательно ты был бы должен, если ты только делаешь доказательства, мог бы открывать BD для любого IP, если это не случай, я думаю, что ты пробуешь сделать пул связей или сходно, если это сервер бесплатного слоя AWS не, если у него есть какая-то, limitaciГіn, deberГ-схвати проверять ее у них могут быть некие ограничения