Node篇 3.NodeJS整合MySQL

我们在上一篇《[JavaScript从入门到放弃] Node篇 2.Express路由分离及传参》简单的学习了设置路由以及获取参数的几种方式,但显然我们只能利用他们做点简单的操作。如果要做个真正的网站,还是需要和数据库结合起来的。

本章,我们就来使用NodeJS来操作MySQL数据库吧,因为MYSQL免费,而且很轻,安装方便,所以很受初创企业和个人开发者的欢迎。

首页新建个models层,里面新建个user_dao文件,与routes/user.js对应。分层嘛,以后与User业务相关的数据库操作都写在这里面了。

然后user_dao里面写啥呢

这个就是基本的打开数据库的链接了,简单的应用中我们是不需要显式的开启关闭的。

你可能已经发现了,我们引入了mysql的包,所以是需要npm install的

目前操作mysql比较流行的,就是mysql.js和easymysql.js两个库,我们在这里只介绍前者的用法。

这两个库的源码已经文档,都可以在github上面搜索到,大家有兴趣自行研究高级用法吧。

下载安装成功之后,我们就可以做事了。

很简单吧,conn.query方法,增删改查都用这个

第一个参数是sql语句

第二个参数是SQL的参数,

第三个参数是个函数,也有三个参数,第一个参数是错误信息,第二个是SQL执行结果,第三个涉及的字段

那么我们执行成功之后,拿到result了,怎么返回出去呢?这里可没有response,所以我们在这个方法上传进来一个callback代表回调函数,查询完成后,执行这个回调函数,将结果传进去。

那这个callback是从哪传进去的呢?当然是routes/user

注意导包是一直需要的。

我们在调用这个getUserList的时候,传进去一个函数,并且这个函数也接收一个参数,此参数实际上就会变成SQL语句的查询结果,然后res.json或res.send返回给请求者呗。

一套流程就这么简单。如果需要传递路由参数,可以在getUserList的callback参数之前,加个args参数,传参呗:

那如果传递多个路由参数咋办呢?

这第二个SQL参数,其实可以接收单个参数或者数组。所以如果有多个参数,就使用数组的方式:

大概就是这么个意思。

我们再看看模糊查询:

再看看增删改,本质上其实都是SQL语句嘛,关键是增删改,其实只需要返回受影响行数:

好了,非常简单。我们现在其实已经可以操作数据库了。

但大家已经看到,我们用这种每次开启连接的方式其实并不是特别好。

mysql的js库中还提供了另一种形式,连接池:

跟其他语言中一样,连接池嘛,就是一次取出多个连接,给大家用,用完了就放回去,效率上理论上是有提高的。

不过听说这个mysql.js库在实际开发应用中,还是有很多坑的。我们暂时就是带大家入个门,自己慢慢踩坑吧。

OK,千里之行始于足下。

你以为这样就结束了吗?少年,你对力量一无所知。

显然我们要和其他语言技术一样,肯定要做连接字符串封装嘛。

这里就简单的封装连接,不对一些SQL操作做封装了,大家自行扩展吧。

原来的dao

好了好了,消化消化吧。

软广:

年底了,有想学编程的请咨询我吧。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171219G0SZI800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券