sqlchain (in-Dev)
Being tired of concating a giant sql and throw it to the query?! Look at a terrible example below:
var insertSQL = 'INSERT INTO geoCoder (address, city, location_lat, location_lng, precise, confidence, level, cityCode, district, province, street, street_number, formatted_address, business)'; insertSQL += 'VALUES ("'+address+'", "'+city+'", '+location_lat+', '+location_lng+', '+precise+', '+confidence+', "'+level+'", '+cityCode+', "'+district+'", "'+province+'", "'+street+'", "'+street_number+'", "'+formatted_address+'", "'+business+'")'; connection;
By slqchain, every line of sql is so well formatted in chaining style. Why not try an elegent solution:
var geoCoder = address: '三国城' city: '无锡' location_lat: 31481714090036 location_lng: 12023922778783 precise: 0 confidence: 25 level: '' cityCode: 317 district: '滨湖区' province: '江苏省' street: '山水西路' street_number: '' formatted_address: '江苏省无锡市滨湖区山水西路' business: '' ; sqlchain ;
下载
可以通过git
来获取源代码:
同样,也可以使用npm
来安装:
npm install sqlchain
注意:请同时安装mysql的module
一些例子
引入包
var sqlchain = ;
连接数据库
关于数据库的配置文件,可以查看mysql模块的文档
sqlchain;
显示数据库
sqlchain; // SHOW DATABASES sqlchain; // USE travelpath
建立表格
查询表格
sqlchain; // SHOW TABLES; sqlchain // 因为这里是查找所有列, find 方法也可以省略 ; /* SELECT * FROM location WHERE (id = 1) OR (area_id >= 100 AND area_id != 30000 AND cname LIKE '%beijing%') */ sqlchain ; // SELECT COUNT(*) FROM location; sqlchain ; /* 与之相对应生成的sql为 SELECT id, area_id, cname, lng, lat FROM location GROUP BY cname ORDER BY id DESC LIMIT 5, 10; */
filter使用规则
符号对应关系
$eq : = $ne : != $lt : < $gt : > $lte : <= $gte : >= $in : IN $ni : NOT IN $like : LIKE %...%
逻辑关系
{...} 对象内属于 AND 关系
// id=1 AND name='xiwan'
{...} 对象间属于 OR 关系
// id!=1 OR name LIKE '%xiwan%'
复合使用
// (id>1 OR id<10) AND name='xiwan' // (id>1 AND id<10) OR name='xiwan'
如何排序
; // 默认 id 倒序 DESC // 正序 ASC
插入数据
var location = {}; locationarea_id = 317; locationcname = "北京市"; locationlng = 116321706230000; locationlat = 39976118846381; sqlchain ;
当然,上面的写法也支持一次插入多条数据:)
sqlchain ;
更新数据
sqlchain ; /* UPDATE location SET cname= "上海" WHERE id = 1; */
删除数据
sqlchain ; /* DELETE FROM location WHERE id <= 10; */
事务支持 (0.2.0)
你要做的其实很简单,把需要执行的sql,放在 begin 和 commit/rollback 之间就可以了
sqlchain ;
Still disgusting about all these callback stacks,you can also use GitHub - async to make it more beautiful:
async;
其他特性
支持直接sql
sqlchain;
补充sql
sqlchain ; sqlchain ;