Node.js 如何快速编写MySQL查询

这里向大家推荐一个叫做'easy-mysql-query'的模块,可以让MySQL查询结构更清晰,书写速度更快,并且减少语法错误。

首先,安装'easy-mysql-query'

npm install easy-mysql-query

引入模块

var emq = reqire('easy-mysql-query');

 

'easy-mysql-query'有两种工作模式:'execute'和'query'模式,分别对应“生成SQL查询并执行”功能和“生成SQL语句但不执行”功能。其中execute模式是默认模式。

可以通过以下两行代码切换模式。

emq.setMode('query');
emq.setMode('execute');

1 execute模式

在execute模式下,生成的MySQL查询会直接执行。参数如下:

emq(method, table, columns, selectors, callback);

例如:

emq('select', 'name', 'users', ['where age>', [20]], function (e, result) {
  if (e) {
    throw e;
  }
  console.log(result);
});

method

 method包括四种:'insert', 'delete', 'update', 'select'

table

table是要处理的表名称

columns

columns是要查询/修改/插入的列名及对应的值

当我们执行insert时,如果columns涵盖了所有列且顺序一致,则columns可以是数组,如果只插入特定列,则必须是对象。如果表格只有一列,columns甚至可以是字符串。

columns = [101, 'TOM', 20, 10000];
emq('insert', 'users', columns, null, callback);
var columns = {
  name: 'TOM',
  age: 20,
  salary: 10000
};
emq('insert', 'users', columns, null, callback);

在update状态下,columns必须是对象。

而在select状态下,要查询多列,columns必须为数组,只查询一列,columns可以是字符串。 

selectors

按照一般SQL查询时的顺序将查询条件写入数组就可以了,如果要插入变量的话,只需将变量作为单独的元素,用逗号隔开即可。注意,如果要利用mysql模块自带的“防SQL注入”功能,请将变量放进数组中,这样就能与其它字符串进行区分。如果不想利用“防SQL注入”功能,则不需要特殊处理。

var selector = ['WHERE id=',[123],'AND age>',[20],'OR name LIKE',['Tom%'],'LIMIT',[5,5]];

 callback

callback接收两个参数e, result,分别是SQL查询过程中抛出的错误和mysql模块查询返回的结果,通过传入callback function可以进行异步处理。

2 query模式

query模式下不需要传入callback,生成的query字符串会作为返回值返回。但注意,该模式下产生的报错也会直接抛出,请注意处理。其他的参数不变。

var selector = ['WHERE id=',[123]];
console.log(emq('select', 'users', 'name', selector));
// SELECT name FROM users WHERE id=123;

3 自动大写和自动空格功能

在进行SQL拼接的时候,我们经常要为了“该不该加空格”和“关键词大写”而大费周章。但是'easy-mysql-query'模块为我们包办了这些问题。selector中的数组元素开头结尾不需要加空格,模块会自动判断是否应该添加,且常见的关键词也会自动替换大写。 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值