Creación de api con Node.js y SQL Server

Creación de api con Node.js y SQL Server

Hola amigos de la #Nerdytud.

En el día de hoy quiero compartirles un ejemplo sobre la creación de una api realizada con node.js interactuando con SQL Server.

Generar proyecto

mkdir apinode && cd apinode

npm init -y

Instalar dependencias

npm i express

npm i mssql

En el root de la aplicación creamos una carpeta denominada src

Generar archivo dbConfig.js

const dbConfig = {
  user: 'usuario',
  password: 'password',
  server: 'localhost',
  database: 'db',
  options: {
    trustedconnection: true,
    trustServerCertificate: true,
    enableArithAbort: true,
    instancename: 'SQLEXPRESS',
  },
  port: 1433,
}

module.exports = dbConfig

Generar modelo

class RolesModel {
  constructor(Id, Name) {
    this.Id = Id
    this.Name = Name
  }
}

module.exports = RolesModel

Generar controller

const config = require('../dbConfig')
const sql = require('mssql')

async function getRoles() {
  try {
    let pool = await sql.connect(config)
    let roles = await pool.request().query('SELECT * FROM Roles')
    return roles.recordsets
  } catch (error) {
    console.error(error)
  }
}

async function addRol(rol) {
  try {
    let pool = await sql.connect(config)
    let addRol = await pool
      .request()
      .input('name', sql.NVarChar, rol.name)
      .query('insert into roles values (@name)')
  } catch (err) {
    console.error(err)
  }
}

module.exports = {
  getRoles: getRoles,
  addRol: addRol,
}

Generar api

const Roles = require('./src/controllers/RolesController')
const express = require('express')
const router = express.Router()

const app = express()

router.use((req, res, next) => {
  console.log('middleware')
  next()
})

router.route('/roles').get((req, res) => {
  Db.getRoles().then((data) => {
    res.json(data[0])
  })
})

var port = process.env.PORT || 5000
app.listen(port)
console.log(`Ejecutandose en port ${port}`)

Testear con Insomnia o Postman