Cual es la forma correcta de usar Mysql en Nodejs?

  • Autor Autor YeltsinReyes
  • Fecha de inicio Fecha de inicio
YeltsinReyes

YeltsinReyes

Mi
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Estoy creando una conexión pool en mi script pero siempre tengo errores en el log,
esto es lo que estoy haciendo, esta mal?

El error es cuando cierro la conexión!
UnhandledPromiseRejectionWarning: Error: Pool is closed.

En database.js
JavaScript:
const mysql = require('mysql');
const { promisify } = require('util');

const pool = mysql.createPool({
    host: '',
    user: '',
    password: '',
    database: ''
});

pool.getConnection(function(err, connection){
    if(err){
        if(err.code === 'PROTOCOL_CONNECTION_LOST'){
            console.error('Database connection was closed.');
        }
       
        if(err.code === 'ER_CON_COUNT_ERROR'){
            console.error('Database has to many connections');
        }
       
        if(err.code === 'ECONNREFUSED'){
            console.error('Database connection was refused');
        }
    }

    if(connection){
        connection.release();
        console.log('DB is Connected');
    }

    return;
});

pool.query = promisify(pool.query);

module.exports = pool;

En index.js

JavaScript:
const con = require('./database');
const webpush = require('web-push');
const express = require('express');

const app = express();

app.post('/enviar', async function(req, res){
   
    const datos = [{'json': JSON.stringify(req.body)}];
    const result = await con.query('INSERT INTO notificaciones set ?', datos);
    const rows = await con.query('SELECT * FROM suscripciones');
   
    for(const i in rows){
   
        const obj = JSON.parse(rows[i].json);
       
        const json = JSON.stringify({
            'icon': req.body.imagen,
            'body': req.body.mensaje,
            'image': req.body.imagen,
            'title': req.body.titulo,
            'requireInteraction': true,
            'vibrate': [200, 100, 200, 100, 200, 100, 200],
            'data': {'id': result.insertId, 'link': req.body.link},
            'actions': [{'action': 'link', 'title': req.body.boton}]
        });
       
        webpush.sendNotification(obj, json).then(function(resp){
           
            if(resp.statusCode === 201){
                const id = [result.insertId];
                con.query('UPDATE notificaciones SET enviadas = enviadas + 1 WHERE id = ?', id);
            }
           
        }).catch(function(erro){
            console.log('ERROR: ', erro);
        });
       
    }
   
    con.end();
    res.redirect('/enviar');
   
});
 
Tenes que usar un ORM porque el codigo de esa manera queda mucho mas prolijo, te recomiendo https://sequelize.org/
En todas parte se recomienda usar un ORM.. es mejor y mas rapido.. yo tengo mucha experiencia trabajando con node... Yo tambien te recomendaria typeorm.. solo que para usarlo tienes que saber typescript... Para mi gusto lo veo mejor que sequelize
 
Atrás
Arriba