mysql-qbuilder

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
-
INSERT
DELETE
UPDATE
ORDER BY
GROUP BY
OFFSET
LIMIT
WHERE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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')
.addSelect('name')
.from('tableName')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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'])
qBuilder.prepare()
.setParameters([5, 'SomeTitle', 'SomeName'])
.execute()
FROM Table
from()
table()
The from and table method is just set the table of query
qBuilder.makeQuery()
.select('id, title, count')
.from('tableName')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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])
.execute()
INSERT OR UPDATE
addOrUpdate()
In some cases You need to add few new records on database, but some times that records is possible
to get from database and need just to update if is exists on database
IMPORTANT: In that case is need to have Unique index on table for can check do is exists
For example here the unique key is need to be title and name
Example for create the unique key: CREATE UNIQUE INDEX title_name_index ON tableName (title, name)
qBuilder.makeQuery()
.table('tableName')
.addOrUpdate(['title', 'count', 'name'], ['count'])
qBuilder.prepare()
.setParameters(['newTitle', 25, 'newName', 25])
.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')
.join('anotherTable', 'tableName.anotherTableId = anotherTable.id', 'Inner')
.where('tableName.id' '>' 2)
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
ORDER BY
orderBy()
Is A method which You can order by some column
qBuilder.makeQuery()
.select('title, count, name')
.from('tableName')
.where('id' '>' 2)
.orderBy('name', true)
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
GROUP BY
groupBy()
Is A method which You can group by some column
qBuilder.makeQuery()
.select('title, count, name')
.from('tableName')
.where('id' '>' 2)
.groupBy('name')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
LIMIT
take()
Is A method which You can get only few records from database
qBuilder.makeQuery()
.select('title, count, name')
.from('tableName')
.where('id' '>' 2)
.take(500)
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
OFFSET
skip()
Is A method which You can skip first few records from database
qBuilder.makeQuery()
.select('title, count, name')
.from('tableName')
.where('id' '>' 2)
.take(500)
.skip(200)
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
WhereNot()
Where clause is is check do condition is not true
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereNot('id', '=', 10, 'OR')
.andWhere('name', '=', 'Simon')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
whereNull()
Get all records which the column is null
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereNull('name')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
whereNotNull()
Get all records which the column is not null
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereNotNull('name')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
whereBetween()
Get all records which the column is between two values
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereBetween('id', [22, 300], 'OR')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
whereNotBetween()
Get all records which the column is not between two values
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereNotBetween('id', [22, 300], 'AND')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
whereYear
Get all records where the column createTime is from 2010
qBuilder.makeQuery()
.select('*')
.from('tableName')
.whereYear('createTime', '=', '2010', 'OR')
qBuilder.prepare().getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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()
.then(result => {
})
.catch(err => {
})
qBuilder.prepare().getResult((err, data) => {
})
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
qBuilder.prepare()
.setParameters([param1, param2, param3])
.execute()
2) With getResult which return result
Is possible to used when You want to get some records from database
qBuilder.prepare()
.setParameters([param1, param2, param3])
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
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
Add
Add new record on database
qBuilder.useScheme('tableName')
.add({ 'username': 'administrator', 'email': 'administrator@admin.com' })
qBuilder.execute()
Get First
Get first record from table
qBuilder.useScheme()
.getFirst('email, username')
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
Get Last
Get last record from table
qBuilder.useScheme()
.getLast('email, username')
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
Get All
Get all records from table
qBuilder.useScheme()
.getAll('email, username')
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
Find by Id
Find record on database by entered id
qBuilder.useScheme('tableName')
.findById(2, 'email')
.findById([2, 3, 4], 'email')
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
Find by Fields
Find records on database by many search conditions or (only one)
qBuilder.useScheme('tableName')
.findByFields({ 'id': 2, 'username': 'administrator' }, 'email', 'or')
.findByFields({ 'id': [2, 3, 4], 'username': ['administrator', 'userNaMe'] }, 'email', 'or')
qBuilder.getResult()
.then(result => {
})
.catch(err => {
})
qBuilder.getResult((err, data) => {
if (err) {
console.log(err)
} else {
}
})
Change log
- v1.6.1
-
- Add
addOrUpdate
You can check how to used from description
- v1.5.2
-
- Make the getResult() to work with both callback or Promise
- v1.5.1
-
- Replace the callback of the getResult with Promise
-
- If the getResult() return only one element then is return directly object. Not like to now array of one object.
- v1.4.1
-
- Add one more option for findById and findByFields searching not only by one value
- 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)