Skip to content

Instantly share code, notes, and snippets.

@BrenoOPrado
Last active October 3, 2022 22:11
Show Gist options
  • Save BrenoOPrado/20d0772916dd3f30df77ba5eab649c81 to your computer and use it in GitHub Desktop.
Save BrenoOPrado/20d0772916dd3f30df77ba5eab649c81 to your computer and use it in GitHub Desktop.
CheckList para usar node.js com express e banco de dados sql

Checklist do Node.js e Express com sql

Iniciando

  • npm init -y
  • criar .gitignore com:
node_modules
.env

Instalação

  • npm i -D nodemon@2.0.19
  • npm i express@4.17
  • npm i mysql2@2.3
  • npm i dotenv@16.0.1

Criar dentro do da raiz (como for nescessario):

  • arquivo docker-compose.yaml
  • arquivo .env

exemplo de conteúdo:

MYSQL_HOST=localhost
MYSQL_PORT=porta_que_vai_ser_usada
MYSQL_USER=nome_de-usuario
MYSQL_PASSWORD=senha
MYSQL_DATABASE_NAME=nome_do_banco_de_dados
MYSQL_WAIT_FOR_CONNECTIONS=true
MYSQL_CONNECTION_LIMIT=10
MYSQL_QUEUE_LIMIT=0

Criar

  • diretório src
  • arquivo server.js no src
  • adicionar require('dotenv').config(); no server.js
  • diretório routes no src
  • arquivo router no routes

exemplo para o router:

const express = require('express');

const router = express.Router();

// o '/' = a '/base_do_router/' vindo do app
router.post('/', (req, res) => {});

module.exports = router;
  • arquivo app.js no src

exemplo para o app:

const express = require('express');
const router = require('./routes/router');

const app = express();

app.use(express.json());

app.use('/base_do_router', router);

module.exports = app;

(se for ser útilizado)

  • banco de dados

Configurar package.json: exemplo:

{
  "name": "nome_projeto",
  "version": "1.0.0",
  "description": "",
  "main": "src/server.js",
  "scripts": {
    "start": "node src/server.js",
    "dev": "nodemon src/server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^2.0.19"
  }
}

Criar conexão com o banco de dados:

  • diretorio db
  • arquivo connection.js no db

conteúdo:

const mysql = require('mysql2/promise');

const connection = mysql.createPool({
  host: process.env.MYSQL_HOST,
  port: process.env.MYSQL_PORT,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE_NAME,
  waitForConnections: process.env.MYSQL_WAIT_FOR_CONNECTIONS,
  connectionLimit: process.env.MYSQL_CONNECTION_LIMIT,
  queueLimit: process.env.MYSQL_QUEUE_LIMIT,
});

module.exports = connection;
  • arquivo nome_relacionado_com_a_funcaoDB.js no db

exemplos:

const conn = require('./connection');

// '?' é substituido na função pelos elementos dentro do array do segundo parâmetro

const insert = (person) => conn.execute(
    `INSERT INTO people 
      (first_name, last_name, email, phone) VALUES (?, ?, ?, ?)`,
    [person.firstName, person.lastName, person.email, person.phone],
  );
  
const findAll = () => conn.execute('SELECT * FROM people');

const findById = (id) => conn.execute('SELECT * FROM people WHERE id = ?', [id]);

const update = (person, id) => conn.execute(
    `UPDATE people 
      SET first_name = ?, last_name = ?, email = ?, phone = ? WHERE id = ?`,
    [person.firstName, person.lastName, person.email, person.phone, id],
  );

const remove = (id) => conn.execute('DELETE FROM people WHERE id = ?', [id]);

module.exports = {
  insert,
  findAll,
  findById,
  update,
  remove,
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment