MySQL query builder for Node
A MySQL query builder for NodeJS.
Installation
npm install @evershop/mysql-query-builder
Usage guide
It implements async/await.
Simple select
const {select} = require('@evershop/mysql-query-builder')
const products = await select("*")
.from("product")
.where("product_id", ">", 1)
.execute(pool);
More complex where
const {select} = require('@evershop/mysql-query-builder')
const products = await select("*")
.from("product")
.where("product_id", ">", 1)
.and("sku", "LIKE", "sku")
.execute(pool);
Event more complex where
const {select} = require('@evershop/mysql-query-builder')
const query = select("*").from("product");
query.where("product_id", ">", 1).and("sku", "LIKE", "sku");
query.orWhere("price", ">", 100);
const products = await query.execute(pool);
Join table
const {select} = require('@evershop/mysql-query-builder')
const query = select("*").from("product");
query.leftJoin('price').on('product.`product_id`', '=', 'price.`product_id`');
query.where("product_id", ">", 1).and("sku", "LIKE", "sku");
query.andWhere("price", ">", 100);
const products = await query.execute(pool);
Insert&update
user_id | name | email | phone | status |
---|
1
|
David
|
emai@email.com
|
123456
|
1
|
const {insert} = require('@evershop/mysql-query-builder')
const query = insert("user")
.given({name: "David", email: "email@email.com", "phone": "123456", status: 1, notExistedColumn: "This will not be a part of the query"});
await query.execute(pool);
const {update} = require('@evershop/mysql-query-builder')
const query = update("user")
.given({name: "David", email: "email@email.com", "phone": "123456", status: 1, notExistedColumn: "This will not be a part of query"})
.where("user_id", "=", 1);
await query.execute(pool);
Working with transaction
const {insert, getConnection, startTransaction, commit, rollback} = require('@evershop/mysql-query-builder');
const pool = mysql.createPool({
host: "localhost",
user: "root",
password: "123456",
database: "test",
dateStrings: true
});
const connection = await getConnection(pool);
await startTransaction(connection);
try {
await insert("user")
.given({name: "David", email: "email@email.com", "phone": "123456", status: 1, notExistedColumn: "This will not be a part of the query"})
.execute(connection);
await commit(connection);
} catch(e) {
await rollback(connection);
}
Security
All user provided data will be escaped. Please check this for more detail.