Skazka

Skazka

  • Server
  • Examples
  • Github
  • Blog

›Database

Introduction

  • Server

Start working

  • Server Init
  • Server Request
  • Server Response
  • Server Error Handler
  • Server Logger
  • Server Cookies Parser
  • Server Helmet

Running server

  • Server HTTP(S)

API

  • Server GraphQL
  • Server Router
  • Server Body Parser
  • Server CORS
  • Server Method Override
  • Server Virtual Host
  • Server Chaos

Database

  • Server Mongoose
  • Server MySQL
  • Server PostgreSQL
  • Server Redis

Static files

  • Server Index
  • Server Static
  • Server SPA

Creating a new modules

  • Server Module Builder
  • Server Express Wrapper

Server MySQL

Skazka Server Promise based mysql client.

How to install

npm i @skazka/server @skazka/server-mysql config promise-mysql

With yarn:

yarn add @skazka/server @skazka/server-mysql config promise-mysql

Optionally you can add http server, error handler, logger, router, request and response:

npm i @skazka/server-http @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

With yarn:

yarn add @skazka/server-http @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

How to use

Config

config/default.json

{
  "mysql": {
    "host": "127.0.0.1",
    "port": 3306,
    "user": "user",
    "password": "password",
    "database": "database",
    "connectionLimit": 10
  }
}

Server module

const App = require('@skazka/server');
const Router = require('@skazka/server-router');

const mysql = require('@skazka/server-mysql');
        
const error = require('@skazka/server-error');
const logger = require('@skazka/server-logger');

const request = require('@skazka/server-request');
const response = require('@skazka/server-response');
        
const server = require('@skazka/server-http');
        
const app = new App();
const router = new Router();
        
app.all([
  error(),
  logger(),
  request(),
  mysql(),
  response(),
]);
    
app.then(async (ctx) => {
  // it works for each request
  const rows = await ctx.mysql.query('select * from users;');
});
    
router.get('/data').then(async (ctx) => {
  const rows = await ctx.mysql.query('select * from users;');
            
  return ctx.response(rows); 
});
        
app.then(router.resolve());
        
server.createHttpServer(app);

With connection:

app.then(async (ctx) => {
  const connection = await ctx.mysql.getConnection();
  const rows = await connection.query('select * from users;');
  ctx.mysql.releaseConnection(connection);
  
  return ctx.response(rows); 
});

Any other module

const pool = require('@skazka/server-mysql/pool');
    
async () => {
  try {
    const rows = await pool.query('select * from users;');
  } catch (error) {
    
  }
};

With connection:

const pool = require('@skazka/server-mysql/pool');
    
async () => {
  try {
    const connection = await pool.getConnection();
    const rows = await connection.query('select * from users;');
    pool.releaseConnection(connection);
  } catch (error) {

  } finally {
    client.release();
  }
};

Transactions

const App = require('@skazka/server');
const app = new App();
const error = require('@skazka/server-error');
const logger = require('@skazka/server-logger');
const request = require('@skazka/server-request');
const response = require('@skazka/server-response');
    
const mysql = require('@skazka/server-mysql');
    
app.all([
  error(),
  logger(),
  request(),
  mysql(),
  response(),
]);
    
app.then(async (ctx) => {
  const connection = await ctx.mysql.getConnection();
  let rows = [];
        
  try {
    await connection.beginTransaction()
    rows = await connection.query('select * from users;');
    await connection.commit();
  } catch (e) {
    await connection.rollback();
  } finally {
    ctx.mysql.releaseConnection(connection);
  }
  
  return ctx.response(rows);
});

Or in any other module:

const pool = require('@skazka/server-mysql/pool');
    
async () => {
  const connection = await pool.getConnection();
    
  try {
   await connection.beginTransaction();
   await connection.query('select * from users;');
   await connection.commit();
  } catch (error) {
    await connection.rollback();
  } finally {
    pool.releaseConnection(connection);
  }
};
Last updated by Evheniy Bystrov
← Server MongooseServer PostgreSQL →
  • How to install
  • How to use
    • Config
    • Server module
    • Any other module
    • Transactions
Copyright © 2019 SkazkaJS