Qual é a forma correta de usar Mysql no Nodejs?

  • Autor Autor YeltsinReyes
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
YeltsinReyes

YeltsinReyes

Mi
Verificación en dos pasos activada
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');
   
});
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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
 
Voltar
Topo