Socket
Socket
Sign inDemoInstall

mysql-qbuilder

Package Overview
Dependencies
8
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mysql-qbuilder

Query Builder for MySQL


Version published
Maintainers
1
Created

Readme

Source

mysql-qbuilder

npm node Build Status npm js-standard-style npm npm

Table of Contents

Install

SQL Query builder working with NodeJS

npm install mysql-qbuilder --save --save-exat

To add this npm package to your local machine, type the above into your command line. You will notice a node_modules directory appear in your root where the package is now installed.

Introduction


mysql-qbuilder is NodeJS module provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application.

mysql-qbuilder query builder uses mysql module to protect your application against SQL injection attacks. There is no need to clean strings being passed as bindings.

Before Start to Used

Before to start to used the mysql-qbuilder is need to set some options In this section is show What You need for to work with mysql-qbuilder

Require the module

const qBuilder = require('mysql-qbuilder')

Set the parameters for mysql connection

qBuilder.setOptions({
 hostname: 'hostName',
 username: 'userName',
 password: 'passWord',
 database: 'databaseName'
})

Then connect to the database

qBuilder.connectToDatabase()

Start to make query

qBuilder.makeQuery()

Clauses

All common cases to use the sql query clauses

  • SELECT
    • SELECT ADD
  • INSERT
  • DELETE
  • UPDATE
  • ORDER BY
  • GROUP BY
  • OFFSET
  • LIMIT
  • WHERE
    • WHERE AND
    • WHERE OR
    • WHERE AND OR
    • WHERE NOT
    • WHERE COLUMN
    • WHERE DATE
    • WHERE YEAR
    • WHERE MONTH
    • WHERE DAY
    • WHERE IN
    • WHERE NOT IN
    • WHERE BETWEEN
    • WHERE NOT BETWEEN
    • WHERE NULL
    • WHERE NOT NULL
  • JOIN
  • FROM
  • TABLE

SELECT

select() addSelect()

Some times You don't want to select all columns from database Then You need to enter just the columns. If You want just write *

  qBuilder.makeQuery().select('id, title, count')
  qBuilder.makeQuery().select(['id', 'title', 'count'])
  qBuilder.makeQuery().select('*')

If You forget some column then You can add that columns with addSelect function If You forget some column then You can add that columns with addSelect function

  qBuilder.makeQuery()
    .select('id, title, count') // Oops I forgot the name column
    .addSelect('name') // Alright I added now
    .from('tableName') // set Database table
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects or just single object
    })

INSERT

add()

Many times You don't want to get the data from database. Just want to add new record

  qBuilder.makeQuery()
    .table('tableName')
    .add(['count', 'title', 'name']) // set the column name on database
  qBuilder.prepare()
    .setParameters([5, 'SomeTitle', 'SomeName']) // set the values of new record
    .execute() // Save the new record on database

FROM Table

from() table()

The from and table method is just set the table of query

  qBuilder.makeQuery()
    .select('id, title, count') // Oops I forgot the name column
    .from('tableName') // set Database table
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects or just single object
    })

DELETE

delete()

The query builder may also be used to delete records from the table used delete function

  qBuilder.makeQuery()
    .table('tableName')
    .delete()
    .where('id', '=', 10)
  qBuilder.prepare().execute()

UPDATE

update()

Some times You don't want to select or add new columns or delete Some times is need just update the existing record in database. This is possible with update function

  qBuilder.makeQuery()
    .table('tableName')
    .update(['title', 'count', 'name'])
    .where('id', '=')
  qBuilder.prepare()
    .setParameters(['newTitle', 25, 'newName'], 10) // The last parameter is for where clause
    .execute()  

JOIN

join()

With Join is possible to get from database record from two tables with one query.

  qBuilder.makeQuery()
    .select('tableName.title, anotherTable.name')
    .from('tableName') // set Database table
    .join('anotherTable', 'tableName.anotherTableId = anotherTable.id', 'Inner')
    .where('tableName.id' '>' 2)
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects
    })

ORDER BY

orderBy()

Is A method which You can order by some column

  qBuilder.makeQuery()
    .select('title, count, name')
    .from('tableName') // set Database table
    .where('id' '>' 2)
    .orderBy('name', true) // Then is to be sorted in DESC
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects or just single object
  })

GROUP BY

groupBy()

Is A method which You can group by some column

  qBuilder.makeQuery()
    .select('title, count, name')
    .from('tableName') // set Database table
    .where('id' '>' 2)
    .groupBy('name')
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects
  })

LIMIT

take()

Is A method which You can get only few records from database

  qBuilder.makeQuery()
    .select('title, count, name')
    .from('tableName') // set Database table
    .where('id' '>' 2)
    .take(500) // Get first 500 results
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects
  })

OFFSET

skip()

Is A method which You can skip first few records from database

  qBuilder.makeQuery()
    .select('title, count, name')
    .from('tableName') // set Database table
    .where('id' '>' 2)
    .take(500) // Get results from 201 to 701
    .skip(200) // Skip the first 200 results
  qBuilder.prepare()
    .getResult((err, data) => {
      // data is the array of objects
  })

NOTICE From Previous version and that version the some secondary where clauses have one more extra (optional) parameter (andOr), where can set AND or OR. On previous version was AND and now default value is AND

WHERE

where()

You may use the where method on a query builder instance to add where clauses to the query The first argument is column name The second argument is operator which You used (by default is =) The third argument is the value of column name on database

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .where('id', '=', 10)
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

WhereNot()

Where clause is is check do condition is not true

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereNot('id', '=', 10, 'OR') // Get all Elements where id is not equal to 10
    .andWhere('name', '=', 'Simon')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

andWhere()

Add another state and tell of the query to be both equal to true

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .where('id', '=', 10)
    .andWhere('name', '=', 'Simon')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

orWhere()

Add another state and tell of the query to be first or second or both equal to true

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .where('id', '=', 10)
    .orWhere('name', '=', 'Simon')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

andOrWhere()

The andOrWhere function is can used if You want first where which You call to be true and add another where which tell or to be first or second operator Like example is tell give me every record with name Simon and Id to be > or < of 35

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .where('name', '=', 'Simon')
    .andOrWhere('id', '>', '<' 35)
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereNull()

Get all records which the column is null

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereNull('name') // get all records which the column name is null
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereNotNull()

Get all records which the column is not null

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereNotNull('name') // get all records which the column name is NOT null
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereBetween()

Get all records which the column is between two values

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereBetween('id', [22, 300], 'OR') // Get all records between 22 and 300
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereNotBetween()

Get all records which the column is not between two values

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereNotBetween('id', [22, 300], 'AND') // Get all records which is not between 22 and 300
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereIn

Get all records which the column value is equal to some parameters which is set

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereIn('id', [2, 4, 6, 3, 8], 'AND') // Get all records with id 2, 3, 4, 6, 8
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereNotIn

Get all records which the column value is not equal to some parameters which is set

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereNotIn('id', [2, 4, 6, 3, 8], 'OR') // Get all records which the id is not 2, 3, 4, 6, 8
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereColumn

Get all records which the first column and second column has same values on database

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereColumn('title', 'name', '=', 'OR') // Get all records which the title and name is same
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereDate

Get all records where the column createTime is equal to 2010-04-01 Date Time

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereDate('createTime', '=', '2010-04-01')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereYear

Get all records where the column createTime is from 2010

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereYear('createTime', '=', '2010', 'OR')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereMonth

Get all records where the column createTime is with month equal to 10

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereMonth('createTime', '=', '10', 'OR')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

whereDay

Get all records where the column createTime is with day equal to 22

  qBuilder.makeQuery()
    .select('*')
    .from('tableName')
    .whereDay('createTime', '=', '22', 'OR')
  qBuilder.prepare().getResult((err, data) => {
    // data is the array of objects
  })

All Query Builder Functions


  // Select few columns used String or Array
  .select('id, title, someDiff')


  // Add few more columns used String or Array IS REQUIRED TO USED SELECT BEFORE USED ADDSELECT
  .addSelect(['count', 'name'])


  // INSERT clause enter the columns which You set the values on new record
  .add(['title', 'count', 'name'])


  // Create from clause where you can used if you used select clause
  .from('tableName')


  // Set the table which You used for that query
  .table('tableName')


  // delete some record from database IS REQUIRED TO USED FROM OR TABLE BEFORE USED DELETE
  .delete()


  // UPDATE that columns on the record
  .update(['title', 'count', 'name'])


  // The last parameter is optional Make join between two tables
  .join('roles', 'roles.id = users.roleId' 'INNER')


  // Get first 500 records from database
  .take(500)


  // Skip first 500 records from database
  // The OFFSET is working together with LIMIT so first used take function!
  .skip(500)


  // Order by count column and set to be DESC (if is false then is not used DESC)
  .orderBy('count', true)


  // Group by count column and don't set to be DESC
  .groupBy('count', false)


  // Find all records which id column is bigger from 5 second and third parameters are optional
  .where('id', '>', 5)


  // Find all records which the id column is not equal to 5
  .whereNot('id', '=', 5)


  // Find all records which and id is equal to some parameter IS REQUIRED TO USED WHERE BEFORE USED ANDWHERE
  .andWhere('id')


  // find all records which is by first where or count is equal to 10 IS REQUIRED TO USED WHERE BEFORE USED ANDWHERE
  .orWhere('count', '=', 10)


  // Find all records which and count bigger from 10 or smaller from 30
  .andOrWhere('count', '>', '<', [10, 30])


  // Find all records which title is null
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereNull('title', 'OR')


  // Find all records which title is not null
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whreNotNull('title', 'AND')


  // Find all records which the column 'count' is between 10 and 30
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereBetween('count', [10, 30])


  // Find all records which the column 'count' is not between 10 and 30
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereNotBetween('count', [10, 30], 'OR')


  // Find all records which is have value like one of the array elements
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereIn('count', [5, 10, 15, 20, 25], 'AND')


  // Find all records which is NOT have value like one of the array elements
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereNotIn('title', ['first', 'second', 'third', 'fourth'], 'AND')


  // Find all records which create time is bigger from  2010-04-01
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereDate('createTime', '>', '2010-04-01', 'OR')


  // Find all records which createTime is have with Day = 22
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereDay('createTime', '=', 22, 'AND')


  // Find all records which createTime is have with Month = 10
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereMonth('createTime', '=', 10, 'OR')


  // Find all records which createTime is have with Year = 2010
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereYear('createTime', '=', 2010, 'OR')


  // Find all records where title and name is the same
  // If before You call the some another where method then is possible to choose between AND and OR (Default = AND)
  .whereColumn('title', 'name', '=', 'OR')

How to Execute

Is have two different ways to execute the created query

1) With execute which not return result

Is possible to used when You want to add new record on database

// Build the query from all simple parts
qBuilder.prepare()
  // Set all parameters which You need to used on mysql query builder
  .setParameters([param1, param2, param3])
  // Just execute the query and don't return some result
  .execute()
2) With getResult which return result

Is possible to used when You want to get some records from database

// Build the query from all simple parts
qBuilder.prepare()
  // Set all parameters which You need to used on mysql query builder
  .setParameters([param1, param2, param3])
  // Get the result of executed query
  .getResult((err, data) => { // is return the Array
    if (err) {
      console.log(err)
    } else {
      // make something with data which is result of mysql query execution
    }
  })

Query Model

From v1.3.1 Is possible to used mysql-qbuilder much easier for some common cases like

  • Add some record on database
  • Get first element from table
  • Get last element from table
  • Get all elements from table
  • Find element by Id
  • Find elements by few columns from table

IMPORTANT:

For to Used Helper Queries is not need to start with makeQuery() Is need to start with useScheme('tableName') If You want to used same table from database then is not need anymore to set table only used useScheme()

Add

Add new record on database

qBuilder.useScheme('tableName')

  // First field is Object where the keys is column of database and values is the values of columns
  .add({ 'username': 'administrator', 'email': 'administrator@admin.com' })

qBuilder.execute()

Get First

Get first record from table

qBuilder.useScheme() // used same table like before

  // First field is String or Array with all columns which You want to get from database
  .getFirst('email, username')

qBuilder.getResult((err, data) => {
  if (err) {
    console.log(err)
  } else {
    // make something with data which is result of mysql query execution
  }
})

Get Last

Get last record from table

qBuilder.useScheme() // used same table like before

  // First field is String or Array with all columns which You want to get from database
  .getLast('email, username')

qBuilder.getResult((err, data) => {
  if (err) {
    console.log(err)
  } else {
    // make something with data which is result of mysql query execution
  }
})

Get All

Get all records from table

qBuilder.useScheme() // used same table like before

  // First field is String or Array with all columns which You want to get from database
  .getAll('email, username')

qBuilder.getResult((err, data) => {
  if (err) {
    console.log(err)
  } else {
    // make something with data which is result of mysql query execution
  }
})

Find by Id

Find record on database by entered id

qBuilder.useScheme('tableName')

  // First field is id of the record
  // Second is all columns which You want to get from database
  .findById(2, 'email')

qBuilder.getResult((err, data) => {
  if (err) {
    console.log(err)
  } else {
    // make something with data which is result of mysql query execution
  }
})

Find by Fields

Find records on database by many search conditions or (only one)

qBuilder.useScheme('tableName')

  // First field is Object where the keys is column of database and values is the values of columns
  // Second is all columns which You want to get from database
  // Third is do You want every condition to be true or only one
  .findByFields({ 'id': 2, 'username': 'administrator' }, 'email', 'or')

qBuilder.getResult((err, data) => {
  if (err) {
    console.log(err)
  } else {
    // make something with data which is result of mysql query execution
  }
})

How to write Your own Query

To write Your own query is need only to call method setCommand

qBuilder.setCommand('SELECT * FROM Table WHERE id > ?')
  // Build the query from all simple parts
  .prepare()
  // Set all parameters which You need to used on mysql query builder
  .setParameters([param1])
  // Get the result of executed query
  .getResult((err, data) => { // is return the Array
    if (err) {
      console.log(err)
    } else {
      // make something with data which is result of mysql query execution
    }
 })

Get Mysql Module

If You want to set more advanced options then You can get the MySql module

qBuilder.getMysql()

Change log

  • v1.3.1
    • Add Helper Query functions with for some common cases like:
      • add Add record on database
      • getFirst Get first element from table
      • getLast Get last element from table
      • getAll Get all elements from table
      • findById Find record from table by id
      • findByFields Find records from table by selected few columns
  • v1.2.0
    • Add WhereDay WhereMonth WhereYear
    • Add One more (Optional) Parameter on Where methods which is possible choose between AND or OR (Default = AND)

Keywords

FAQs

Last updated on 08 Apr 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc