
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
mysql-bundle
Advanced tools
Mysql-bundle is extended from 'felixge/node-mysql' but more easy to use. Besides the basic functions of mysql, it has file template sql and ES5 generator supporting.
mysql-bundle is extended from felixge/node-mysql but more easy to use. Besides the basic functions of mysql, it has file template sql and ES5 generator-supporting.
##Features
###1. File Template Sql You can put sql in *.sql file under your project (default is in ${project}/mysql-bundle/sql/). The mysql-bundle will load them into memory when startup. Then, you can reference them by their names.
###2. ES5 Generator Supporting This feature can makes you away from complex callbacks and use this module in koa
###3. All Configs Via config
##Installation
$ npm install mysql-bundle
##Example
var bundle = require('mysql-bundle');
// get a common client (use callback)
var client = bundle.obtain('cluster-selector');
// get a generator-supporting client
var coClient = bundle.obtainCo('cluster-selector');
var userData = {
nickname: 'Jim Hanks',
username: 'Jim0455',
age: 21
};
// callback-like query vio template (name without suffix ".sql" )
client.queryTemplate('insert_user_name', userData, function(err, rows){ ... });
var sql = 'update `user` set `nickname` = :nickname, `username` = :username, `age` = :age'
client.query(sql, userData, function(err, rows){ ... });
// generator-supporting query
co(function*(){
var rows1 = yield coClient.queryTemplate('insert_user_name', userData);
var sql = 'update `user` set `nickname` = :nickname, `username` = :username, `age` = :age';
var rows2 = yield client.query(sql, userData);
}).catch(function(err){ ... });
##Guide
###1. Configure All configs are under 'mysql-bundle' node of config. For example:
{
"mysql-bundle": {
"config": {
"canRetry": true,
"restoreNodeTimeout": 10000,
"defaultSelector": "RANDOM",
"templateDir": "mysql-bundle/sql"
},
"cluster": {
"alpha0": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "12345678",
"database": "alpha0"
},
"alpha1": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "12345678",
"database": "alpha1"
},
"beta0": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "12345678",
"database": "beta0"
},
"beta1": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "12345678",
"database": "beta1"
}
}
}
}
config['mysql-bundle']['config'] is the cluster init config, used by require('mysql').createPoolCluster. The details info is: PoolCluster Option. Every node in config['mysql-bundle']['cluster'] is the connection config. The details info is: Connection options.
###2. Sql File The default template dir is "mysql-bundle/sql", this can be configured by change the value of config['mysql-bundle']['config']['templateDir']. This value is relative to cwd. ###3 Template Formate
// 1. array format, this is the same as node-mysql
var sql = 'update `tab` set a = ?, b = ?, c = ?';
client.query(sql, ['a', 'b', 'c'], function(){});
// when sql content in template file upate_tab.sql under template dir
client.queryTemplate('upate_tab', ['a', 'b', 'c'], function(){});
// 2. object/map format
var sql = 'update `tab` set a = :a, b = :b, ::col_c = :c';
var map = {
a: 'a',
b: 'b',
c: 'c',
col_c: 'c'
// the 'col_c' is start '::' not ':', that means , it's a col-name, will be wrap by `...`
};
client.query(sql, map, function(){});
// also, this sql can be put into a template file and well-formated. If it in upate_tab_map.sql
client.queryTemplate('upate_tab_map', map, function(){});
// 3. all example above in generator
var rows1 = yield client.query(sql, ['a', 'b', 'c']);
var rows2 = yield client.queryTemplate('upate_tab', ['a', 'b', 'c']);
var rows3 = yield client.query(sql, map);
var rows4 = yield client.queryTemplate('upate_tab_map', map);
// 4. If there is a sub-dir in template dir such as ${template dir}/subdir,
// then the sql file under it can be access by 'subdir.${name}'.
// For example: upate_tab_map.sql under ${template dir}/subdir:
var rows4 = yield client.queryTemplate('subdir.upate_tab_map', map)
// This feature is a simple modularized design.
##Authors
FAQs
Mysql-bundle is extended from 'felixge/node-mysql' but more easy to use. Besides the basic functions of mysql, it has file template sql and ES5 generator supporting.
The npm package mysql-bundle receives a total of 4 weekly downloads. As such, mysql-bundle popularity was classified as not popular.
We found that mysql-bundle demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.