精华
mysql-querier: SQL 查询构造器
https://www.npmjs.com/package/mysql-querier https://github.com/jysperm/mysql-querier
这个包是为了解决这样的场景,有时项目比较简单,就决定不上 ORM 了,往 MySQL 写数据倒是简单,反正一共没几个地方,但是查数据就不太好办了,尤其是在前后端分离的情况下,写后端的时候不太容易预计到前端到底需要以何种方式查询。于是我实现了一个简单的包,接受一个 JSON, 返回一个 SQL, 通过这个包可以在后端简单地定义允许前端通过哪些字段查询,从前端发来的 JSON 构造查询。
querier = require 'mysql-querier'
userQuerier = querier 'users',
user_id:
number: true
role:
enum: ['admin', 'user']
app.get '/user/query', (req, res) ->
mysql.query userQuerier(req.query), (err, rows) ->
res.json rows
目前只有一点我不是很满意的地方,就是没有办法定义结果中不包含哪些字段,似乎 MySQL 没有提供这样的功能(只能指定要查的字段,不能排除某些字段)。
因为是几个小时写的东西,还没有在生产环境检验过,我只能说尽可能考虑的注入的问题,并且测试覆盖了大部分分支。