https://github.com/alsey/nodejs-mysql
The wrapper of Node.js MySQL driver with Promise enabled.
https://github.com/alsey/nodejs-mysql
mysql nodejs
Last synced: 5 months ago
JSON representation
The wrapper of Node.js MySQL driver with Promise enabled.
- Host: GitHub
- URL: https://github.com/alsey/nodejs-mysql
- Owner: alsey
- License: mit
- Created: 2016-11-16T05:21:30.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-11-23T05:42:08.000Z (over 8 years ago)
- Last Synced: 2025-10-08T09:14:19.393Z (8 months ago)
- Topics: mysql, nodejs
- Language: JavaScript
- Homepage:
- Size: 26.4 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nodejs-mysql
The wrapper of Node.js MySQL driver with Promise enabled.
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Linux Build][travis-image]][travis-url]
[![Windows Build][appveyor-image]][appveyor-url]
[![Test Coverage][coveralls-image]][coveralls-url]
[](https://nodei.co/npm/nodejs-mysql/)
```js
import mysql from 'nodejs-mysql'
const db = mysql.getInstance(config)
db.exec('select col1, col2 from a_table')
.then(rows => res.ok(rows))
.catch(e => res.err(e)))
```
## Installation
```bash
$ npm install nodejs-mysql
```
## Demo
Folder `demo` includes a simple demo of both [ES5](https://github.com/alsey/nodejs-mysql/blob/master/demo/simple_es5.js) and [ES6](https://github.com/alsey/nodejs-mysql/blob/master/demo/simple_es6.js).
## How to Use
Use config object to describe database connection(s).
```javascript
// single database connection
const config = {
host: '192.168.0.100',
port: 3306,
user: 'root',
password: 'password',
database: 'testdb'
}
// database connection pool
const config = [
{
host: '192.168.0.101',
port: 3306,
user: 'root',
password: 'password',
database: 'testdb',
dateStrings: true,
debug: false
},{
host: '192.168.0.102',
port: 3306,
user: 'root',
password: 'password',
database: 'testdb',
dateStrings: true,
debug: false
},{
host: '192.168.0.103',
port: 3306,
user: 'root',
password: 'password',
database: 'testdb',
dateStrings: true,
debug: false
}
]
```
Get instance in anywhere before do database operations.
```javascript
import mysql from 'nodejs-mysql'
const db = mysql.getInstance(config)
```
**Attention** If you are not using ES6, import package like this,
```javascript
const mysql = require('nodejs-mysql').default;
```
Method `exec` for all database operation, close database connection is not need.
```javascript
// select
db.exec('select col1, col2 from a_table')
.then(rows => {
// do sth. with result in rows
})
.catch(e => {
// handle errors
})
// insert
db.exec('insert into a_table set ?', {
col1: value1,
col2: value2
})
.then(rows => {
// no error, insert ok
})
.catch(e => {
// insert failed, handle errors
})
// update
db.exec('update a_table set col1 = ?, col2 = ?', [value1, value2])
.then(rows => {
// no error, update ok
})
.catch(e => {
// update failed, handle errors
})
// delete
db.exec('delete from a_table where col1 = ?', [value1])
.then(rows => {
// no error, delete ok
})
.catch(e => {
// delete failed, handle errors
})
```
`nodejs-mysql` also support transaction. Transaction code like this,
```javascript
db.connect()
.then(conn => db.trans(conn))
.then(conn => db.query(sql, params, conn))
.then((rows, conn) => {
// do sth. with the result in rows
return db.query(sql2, params2, conn)
})
.then((rows, conn) => {
// do sth. with the result2 in rows
if (condition)
return db.query(sql3, params3, conn)
else
return db.ok(rows) // <-- directly put result to next
})
.then((rows, conn) => {
// do sth. with the result3 in rows
return db.commit(conn)
})
.catch(e => {
// handle errors
})
```
## License
[MIT](LICENSE)
[npm-image]: https://badge.fury.io/js/nodejs-mysql.svg
[npm-url]: https://npmjs.org/package/nodejs-mysql
[downloads-image]: https://img.shields.io/npm/dm/nodejs-mysql.svg
[downloads-url]: https://npmjs.org/package/nodejs-mysql
[travis-image]: https://img.shields.io/travis/alsey/nodejs-mysql/master.svg?label=linux
[travis-url]: https://travis-ci.org/alsey/nodejs-mysql
[appveyor-image]: https://img.shields.io/appveyor/ci/alsey/nodejs-mysql/master.svg?label=windows
[appveyor-url]: https://ci.appveyor.com/project/alsey/nodejs-mysql
[coveralls-image]: https://img.shields.io/coveralls/alsey/nodejs-mysql/master.svg
[coveralls-url]: https://coveralls.io/r/alsey/nodejs-mysql?branch=master