dj-node-mysql
Install
$ npm install dj-node-mysql
使用示例
var Mysql = require('node-mysql-promise');
var mysql = Mysql.createConnection({
host : 'localhost',
user : 'username',
password : 'password'
});
mysql.table('table').select().then(function (data) {
console.log(data);
}).catch(function (e) {
console.log(e);
});
##API
配置
host
: 连接的host(默认: localhost)port
: 连接端口user
: 用户名password
: 密码database
: 数据库名tablePrefix
: 数据表前缀charset
: 编码(默认: UTF8_GENERAL_CI)timezone
: 时区(默认: 'local')connectTimeout
: 连接超时时间(默认: 10000)connectionLimit
: 最大连接数(默认: 10)logSql
: 控制台输出sql(默认: false)
方法
table(tableName)
设置要查询的表(必需)
tableName
String 要查询的表return
this
mysql.table('table').select()
field(field, reverse)
设置要查询的字段
field
String|Array 要查询的字段,可以是字符串,也可以是数组reverse
Boolean 是否反选字段return
this
mysql.table('table').field().select();
mysql.table(['id', 'title']).select();
mysql.table('table').field(['id', ['title', 'kk']], true).select();
limit(offset, length)
设置查询的数量
offset
Number 起始位置length
Number 查询的数目return
this
mysql.table('table').limit(10).select();
mysql.table('table').limit(10, 20).select();
page(page, listRows)
设置当前查询的页数,页数从1开始
page
Number 当前的页数listRows
Number 一页记录条数,默认20条return
this
mysql.table('table').page().select();
mysql.table('table').page(1).select();
mysql.table('table').page(2, 10).select();
union(union, all)
联合查询
union
String 联合查询的字符串all
是否为UNION ALL模式return
this
mysql.table('table').union('SELECT * FROM `table2`').select();
mysql.table('table').union('SELECT * FROM `table2`', true).select();
mysql.table('table').union({table: 'table2'}, true);
mysql.table('table').UNION({table: 'table2`}, true).union({table: 'table3'});
join(join)
组合查询
join
String|Array|Objectreturn
this
mysql.table('table').join('table2 on table.id = table2.id').select();
mysql.table('table').join('table2 ON table.id = table2.id', 'RIGHT JOIN table3 ON table.sid = table3.sid').select();
mysql.table('table').join({
table: 'table2',
join: 'inner',
as: 'c'
on: ['id', 'id']
}).select();
mysql.table('table').alias('a').join({
table: 'table2',
join: 'left',
as: 'b'
on: ['id', 'id']
}).join({
table: 'table3',
join: 'left',
as: 'c',
on: ['sid', 'sid']
}).select();
mysql.table('table').join({
table2: {
join: 'left',
as: 'b',
on: ['id', 'id']
},
table3: {
join: 'left',
as: 'c',
on: ['sid', 'sid']
}
}).select();
mysql.table('table').join({
table2: {
on: ['id', 'id']
},
table3: {
on: {
id: 'id',
title: 'name'
}
}
}).select();
order(order)
设置排序方式
order
String|Array|Obeject 排序方式return
this
mysql.table('table').order('id').select();
mysql.table('table').order('id DESC').select();
mysql.table('table').order('id DESC, title ASC').select();
mysql.table('table').order(['id DESC', 'title ASC']).select();
mysql.table('table').order({id: 'DESC', title: 'ASC'}).select();
alias(alias)
设置表别名
alias
String 表别名return
this
mysql.table('table').alias('t').select();
having(str)
having查询
str
String having查询的字符串return
this
mysql.table('table').having('id > 1 AND id < 100').select();
group(field)
分组查询
field
String 设定分组查询的字段return
this
mysql.table('table').group('date').select();
distinct(field)
去重查询
field
String 去重的字段return
this
mysql.table('table').distinct('title').select();
where(where)
设置where条件
where
Sting|Object 查询条件return
this
普通条件
mysql.table('table').where('id = 100').select();
mysql.table('table').where({id: 100}).select();
mysql.table('table').where('id = 100 OR id < 2').select();
mysql.table('table').where({id: ['!=', 100]})
EXP条件
默认会对字段和值进行转义,如果不希望被转义,可是使用EXP的方式
mysql.table('table').where({name: ['EXP', "='name'"]}).select();
mysql.table('table').update({num: ['EXP', 'num+1']});
LIKE条件
mysql.table('table').where({title: ['NOT LIKE', 'title']}).select();
mysql.table('table').where({title: ['LIKE', '%title%']}).select();
mysql.table('table').where({title: ['LIKE', ['title', 'name']]}).select();
mysql.table('table').where({'title|content': ['LIKE', '%title%']}).select();
mysql.table('table').where({'title&content': ['LIKE', '%title%']}).select();
IN条件
mysql.table('table').where({id: ['IN', '1, 2, 3']}).select();
mysql.table('table').where({id: ['IN', [1, 2, 3]]}).select();
mysql.table('table').where({id: ['NOT IN', [1, 2, 3]]}).select();
多字段查询
mysql.table('table').where({id: 10, title: 'title'}).select();
mysql.table('table').where({id: 10, title: 'title', _logic: 'OR'}).select();
mysql.table('table').where({id: 10, title: 'title', _logic: 'XOR'}).select();
BETWEEN
mysql.table('table').where({id: ['BETWEEN', 1, 2]}).select();
mysql.table('table').where({id: ['BETWEEN', '1,2']}).select();
复合查询
mysql.table('table').where({id: {
'>': 10,
'<': 20
}}).select();
mysql.table('table').where({id: {
'<': 10,
'>': 20,
_logic: 'OR'
}}).select();
mysql.table('table').where({id: {
'>': 10,
'<': 20
}, title: ['LIKE', '%title%']}).select();
mysql.table('table').where({
title: 'title',
_complex: {
id: ['IN', [1, 2, 3]],
content: 'content',
_logic: 'OR'
}
}).select();
count(field)
查询符合条件的数目
field
String count的字段return
promise
mysql.table('table').count('id').then(function (count) {
})
sum(field)
求和
field
String 要求和的字段return
promise
mysql.table('table').sum('num').then(function (sum) {
});
max(field)
求字段的最大值
field
String 要求最大值的字段return
promise
mysql.table('table').max('num').then(function (max) {
});
min(field)
求字段的最小值
field
String 要求最小值的字段return
promise
mysql.table('table').min('num').then(function (min) {
})
avg(field)
求字段的平均值
field
Sting 要求平均值的字段return
promise
mysql.table('table').avg('num').then(function (avg) {
})
insert(data)
插入数据
data
Object 要插入的数据return
promise
var data = {
title: 'title',
content: 'content'
};
mysql.table('table').insert(data).then(function (insertId) {
}).catch(function (err) {
})
thenInsert(data, where, returnDetail)
当数据表中不存在where条件对应的数据时才进行插入
data
Object 要插入的数据where
String|Array|Object 检测的条件returnDetail
Boolean 是否返回详细的信息
var data = {
title: 'title',
content: 'content'
};
var where = {
title: 'title'
}
mysql.table('table').thenInsert(data, where).then(function (id) {
})
mysql.table('table').thenInsert(data, where, true).then(function (data) {
})
InsertAll(data)
一次添加多条数据
var data = [{title: 'xxx'}, {title: 'yyy'}];
mysql.table('table').InsertAll(data).then(function (insertId) {
}).catch(function (err) {
})
delete()
删除数据
mysql.table('table').delete().then(function (affectRows) {
})
mysql.table('table').where(where).delete().then(functino (affectRows) {
})
update(data)
更新数据,需要条件
data
Object 要更新的数据return
promise
mysql.table('table').where(where).update(data).then(function (affectRows) {
})
select()
查询符合条件的数据
mysql.table('table').where(where).select().then(function (data) {
})
find()
查找一条符合条件的数据
mysql.table('table').where(where).find().then(function (data) {
})
updateInc(field, step)
字段值增加
field
String 要增加的字段step
Number 增加的数值,默认为1return
promise
mysql.table('table').where({id: 1}).updateInc('num', 10).then(function () {
})
updateDec(field, step)
字段值减少
field
String 要减少的字段step
Number 减少的数字,默认为1return
promise
mysql.table('table').where({id: 1}).updateDec('num', 10).then(function () {
})
getField(field, onlyOne)
获取某个字段的值
field
String 要获取的字段,可以是多个字段(用,隔开)onlyOne
Boolean|Array 是否只需要一个值,或者是需要几个值
mysql.table('table').where({id: ['>', 100]}).getField('id').then(function (data) {
})
mysql.table('table').where({id: ['>': 100]}).getField('id', true).then(function (data) {
})
mysql.table('table').where({id: ['>' 100]}).getField('id', 3).then(function (data) {
})
mysql.table('table').getField('id, title').then(function (data) {
})
countSelect(options, flag)
options
查询参数flag
Boolean 当分页值不合法的时候,处理情况。true为修正到第一页,false为修正到最后一页,默认不进行修正return
promise
mysql.table('table').page(1, 20).countSelect().then(function (data) {
data = {
count: 123,
total: 7
page: 1
num: 20
data: [{}, {}]
}
});
query(sql, parse)
自定义sql语句进行查询
sql
String 要执行的sql语句parse
格式参数的数据return
promise
var data = [
'*',
'table',
'id > 100'
]
mysql.query('SELECT %s FROM %s WHERE %s', data).then(function (data) {
})
execute(sql, parse)
自定义sql语句执行,使用与query相同,返回数据不同,execute返回影响行数
close()
关闭连接池连接,非特殊情况,不建议使用