专栏首页企鹅号快讯Node篇 3.NodeJS整合MySQL

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

好了好了,消化消化吧。

本文来自企鹅号 - 慎独网只说真话媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQLplus命令

    Oracle的sqlplus是与oracle数据库进行交互的客户端工具,借助sqlplus可以查看、修改数据库记录。在sqlplus中,可以运行sqlplus命...

    企鹅号小编
  • SQL,一门不是语言的语言?

    提起编程语言,更多人想到的是java、python、C、C++,甚至是php、js,几乎无人提到SQL,甚至很多编程语言排行榜里也将SQL排除在外。 同是向计算...

    企鹅号小编
  • 前端异常监控系统

    来源:子慕大诗人 http://www.cnblogs.com/1wen/p/7942608.html 导火索 有一天一个测试同事的一个移动端页面白屏了,看样子...

    企鹅号小编
  • 模拟停车场问题

    设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆...

    用户2038589
  • RabbitMQ学习系列教程一

    我们知道rabbitMq是Erlang语言写的。那么,我们想要安装mq的话,就需要安装Erlang环境。不同版本的mq对应的erlang不同。那么怎么知道mq与...

    凯哥Java
  • git 问题:permission denied

    将已有的删除,新建New SSH key,title随意起一个,ssh-rsa开的复制到key中。

    努力在北京混出人样
  • 聊一聊数据库中的锁

    数据库中有一张叫后宫佳丽的表,每天都有几百万新的小姐姐插到表中,光阴荏苒,夜以继日,日久生情,时间长了,表中就有了几十亿的小姐姐数据,看到几十亿的小姐姐,每到晚...

    码农阿宇
  • 图的着色

    图着色问题,相邻的点颜色不同       基础知识:http://wenku.baidu.com/view/d7242fd1c1c708a1284a444d.h...

    用户1624346
  • 《机器学习实战》(十三)—— PCA

    http://blog.csdn.net/u011239443/article/details/77363466

    用户1621453
  • Virtual Machine Manager 2012 R2准备SQL模板

    Virtual Machine Manager提供了服务模板,帮助我们以服务形式对多个虚机进行同时配置。当然多个虚机组中肯定就需要包含SQL服务器,要进行SQL...

    李珣

扫码关注云+社区

领取腾讯云代金券