最近本人在用node写一点小demo, 因为用node做后台的话少不了操作mysql, 刚开始就用了npm中的mysql包, 看了下文档, 大致了解了一下基本使用方式
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.end();
先连接数据库, 再写SQL语句, 通过query方法执行SQL, 得到返回结果。
可是由于本人是一名phper, 经常操作mysql, 可很少用写源生SQL的方式来操作mysql(除非有时候在控制台里使用或有一些比较复杂的SQL语句), 我不知道你们有没有觉得不太方便, 但至少我觉得操作起来变复杂了一些。
于是我在npm上找了一番, 看有没有对mysql操作进行一系列封装的简便操作的npm包。经过一番捣鼓, 最终发现了一个比较不错的包, 和我们phper用tp框架操作mysql基本很相似。包名叫 easy-mydb
(npm地址:https://www.npmjs.com/package/easy-mydb)
而且我发现还有中文文档(https://github.com/huchengyong/easy-mydb/blob/master/README_ZH.md)
这个包配置数据库的连接方式和npm中mysql官方的使用方式基本保持一致, 目前只发现有一个参数 prefix 和官方不一样, 这个参数是用来指明数据表的前缀的。
下面来介绍一下基本的使用方法
安装后实例化, 实例化的时候传入配置参数
var EasyMydb = require('easy-mydb');
var Db = new EasyMydb({
host: '127.0.0.1',
user: 'root',
password: '123456',
database: 'test_db',
prefix: '' //表前缀可不填
})
然后通过model方法实例化一个表的模型, 比如user表
var User = Db.model('user')
这里的user必须是表名, 如果定义了前缀了的话, 它会默认加上前缀, 不需要自己手动写了, 比如表名是db_user, 那么实模型的时候依然是
Db.model('user')
只不过上面的prefix参数要填db_
接下来 User 后面的所有操作都是针对user表的,例如查询数据
User.select()
这是一个select查询, 查询所有的数据, 可以where方法添加查询条件, 或者limit方法, 限制查询的结果数量, 还有order 排序, group分组等一系列操作
User.where({gender: '男'}).order('age', 'desc').group('class').limit(10).select()
上面代码代表的是 根据class分组, 筛选出10名按照age从大到小排序的男性用户
如果想添加一条数据的话
User.insert({name: 'Tom', age: '18', gender: '男'})
还能支持批量插入
User.insertAll([
{name: 'Tom', age: '18', gender: '男'},
{name: 'Jerry', age: '20', gender: '男'},
...
])
更新操作
User.where({id: 1}).update({age: 20})
把id为1的用户的age改为20
删除操作
User.where({id: 1}).del()
删除id为1的用户
基本的增删改查就像上述一样, 有时候需要配合where方法来添加过滤条件
where方法也有多种用法, 详情见官方文档
还有几种聚合统计的用法, 用起来也很方便
User.count() //统计数量
User.max('age') //最大值
User.min('age') //最小值
User.avg('age') //平均数
User.sum('age') //聚合相加
用完了之后还需要release来释放链接
User.release()
好了, 基本的介绍就到这了, 更多的使用方法还是希望你能去官方文档去摸索, 希望这篇文章能对你有所帮助