资讯专栏INFORMATION COLUMN

nodejs如何简洁优雅的访问mysql数据库

jlanglang / 1819人阅读

摘要:如何简洁优雅的访问数据库一前言诞生以来出现了一大批的框架如等等,前端可以不再依赖后端可以自己控制服务端的逻辑。今天我们就来说说前端在中如何操作数据库。

nodejs如何简洁优雅的访问mysql数据库
一、前言
nodejs诞生以来出现了一大批的web框架如express koa2 egg等等,前端可以不再依赖后端可以自己控制服务端的逻辑。今天我们就来说说前端在nodejs中如何操作mysql数据库。
二、操作数据库
直接使用mysqljs,比如查询一个字段,代码逻辑看起来是很清晰的,但是仅查询一个字段就需要这么多代码实在是过于麻烦:
一些框架都提供了一些自己的接口去简化CRUD操作,比如egg中提供了egg-mysql:
简单查询条件场景可以解决,但是我们的真实场景的查询条件中各种表关联、各种字段like、in、findinset拼接条件、各种子查询等等操作都满足不了,必须要自己写SQL文。
例如自己写SQL去实现一个服务端分页,实现起来也是比较麻烦的:
那有没有更简洁的方法去操作数据库呢,答案是肯定的社区有很多优秀的orm或sql builder的类库比如objection、sequelize、knexjs、squel等。
三、工具介绍
但在这里要向大家介绍一我们自己的内部的一个更加简洁易用的的nodejs操作mysql的工具类库 ali-mysql-client 它是一个sql builder思路的实现的工具,无需你额外再去定义数据模型更加轻量简洁。
先看一个查询示例,是不是看起来简洁易懂:
下面介绍下它的一些特点:

SQL Builder能力

提供了select insert update delete的强大的SQL Builder能力

丰富的Command

提供了丰富的数据库command更方便的访问数据库

条件封装拓展

这里的第三个参数operator就是我们封装的条件逻辑,可传入字符串或函数,不传时默认是equal,
在类库中内置了以下操作符:
eq (equal)
ne (not equal)
in (in)
gt (greater than)
ge (greater than or equal)
lt (less than)
le (less than or equal)
isnull (is null)
isnotnull (is not null)
like (like)
startwith (start with)
endwith (end with)
between (between)
findinset (find_in_set(value, field))
insetfind (find_in_set(field, value))
sql (custom sql)
keywords (keywords query)
支持自己拓展:

动态条件

这个是我们根据我们自己的经验设计的一个参数,在社区目前还没看到过类似的,它的作用主要是用来简化代码,也就是当满足xx条件时则忽略该查询条件,设计的初衷是为了简化代码,比如以下代码是很常见的,界面上有输入值则查询,没有输入值时不做为查询条件
比如界面上有输入值时则当作查询条件,这是很常见的
上面的代码使用ignore时则可简化为:
支持传字符串或传入函数,传入字符串则会匹配到已定义的逻辑,其函数的形式如下:

事件支持

当然我们开发时需要查问题看看为什么查询出来的数据不对,所以支持了一些事件,在这些事件中你可以记录你的sql日志或做一些其它的事件
四、使用示例
在koa框架中完整的使用示例:
├── app
│ ├── controller
│ │ └── home.js
│ ├── router.js
│ └── service
│ ├── bar.js
│ └── foo.js
├── app.js
├── config.js
└── package.json
配置文件config.js
入口文件app.js
路由配置router.js
控制器controller/home.js
服务service/foo.js
更多示例
demo-egg
demo-koa
demo-express
四、开源地址
ali-mysql-client 已经开源到了 github 上,目标是为nodejs访问mysql数据库提供强大流畅的api的工具类库,希望访问数据库逻辑都能使用一行代码完成,让访问数据库变得更加简单优雅,大家使用有问题欢迎大家在 github 反馈讨论。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106328.html

相关文章

  • 使用Ghost搭建个人博客

    摘要:使用搭建个人博客作为一个技术人员,一般都会有写一些博客,分享一些文章咱们做技术的就是爱分享。下面我就简单讲解一下在系统下如何使用搭建搭建个人博客网站。 使用Ghost搭建个人博客 作为一个技术人员,一般都会有写一些博客,分享一些文章(咱们做技术的就是爱分享)。因此也诞生了非常多的开源博客系统,比如像wordpress也是目前世界最流行,应用最广的一个天源博客系统,有非常多的插件及模版。...

    Developer 评论0 收藏0
  • 使用Ghost搭建个人博客

    摘要:使用搭建个人博客作为一个技术人员,一般都会有写一些博客,分享一些文章咱们做技术的就是爱分享。下面我就简单讲解一下在系统下如何使用搭建搭建个人博客网站。 使用Ghost搭建个人博客 作为一个技术人员,一般都会有写一些博客,分享一些文章(咱们做技术的就是爱分享)。因此也诞生了非常多的开源博客系统,比如像wordpress也是目前世界最流行,应用最广的一个天源博客系统,有非常多的插件及模版。...

    PAMPANG 评论0 收藏0
  • 使用Ghost搭建个人博客

    摘要:使用搭建个人博客作为一个技术人员,一般都会有写一些博客,分享一些文章咱们做技术的就是爱分享。下面我就简单讲解一下在系统下如何使用搭建搭建个人博客网站。 使用Ghost搭建个人博客 作为一个技术人员,一般都会有写一些博客,分享一些文章(咱们做技术的就是爱分享)。因此也诞生了非常多的开源博客系统,比如像wordpress也是目前世界最流行,应用最广的一个天源博客系统,有非常多的插件及模版。...

    dreamtecher 评论0 收藏0
  • 使用Ghost搭建个人博客

    摘要:使用搭建个人博客作为一个技术人员,一般都会有写一些博客,分享一些文章咱们做技术的就是爱分享。下面我就简单讲解一下在系统下如何使用搭建搭建个人博客网站。 使用Ghost搭建个人博客 作为一个技术人员,一般都会有写一些博客,分享一些文章(咱们做技术的就是爱分享)。因此也诞生了非常多的开源博客系统,比如像wordpress也是目前世界最流行,应用最广的一个天源博客系统,有非常多的插件及模版。...

    GraphQuery 评论0 收藏0
  • 使用 react + koa2 + mysql 开发出一个简洁风格个人博客

    摘要:前言使用有一段时间了也想用去写点什么,平时接触最多的就是了,于是乎借助这个框架设计出了一个极其简约风格的博客。体验博客完整的功能。合适的项目架构可以提高开发效率和更好的后期维护。 前言 使用 react 有一段时间了, 也想用 react 去写点什么,平时接触最多的就是 blog 了,于是乎借助 antd 这个 UI 框架设计出了一个极其简约风格的 spa 博客。目的也是将 react...

    snowLu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<