位置: 编程技术 - 正文

Node.js与MySQL交互操作及其注意事项(nodejs和mysql)

编辑:rootadmin

推荐整理分享Node.js与MySQL交互操作及其注意事项(nodejs和mysql),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs连接mysql,nodejs连接mysql,nodejs和mysql,nodejs mysql orm,node js mysql,node js mysql,node js mysql,nodejs和mysql,内容如对您有帮助,希望把文章链接给更多的朋友!

node.js作为服务端的js运行环境已经出现了有几年了,最近我有个朋友也在做这方面的开发,但是也是刚刚接触,遇到了很多坑。前几天他们在操作数据库的时候出现了点问题,后来我们一起看了看,其实都是node本身机制的一些问题,这里总结一下给新手做借鉴。

我朋友的数据库采用的是MySQL。(至于为什么不用mongoDB,这个是公司上层选型的结果,因为很多新手朋友似乎总是觉的node.js就是应该和mongoDB联系在一起,所以这里简单说下)。我后来写了一个简单的小例子,整个小例子使用了express框架,node_modules里面已经下载好了express和ejs模板。先来看下目录:

server.js =》 node.js的服务器启动文件

db.js =》 数据库操作文件

views =》 存放模板文件,也就是所有的页面存放的地方

public =》 存放所有静态资源的地方,比如css js images之类的

首先介绍一下node.js连接MySQL的步骤,第一步,需要安装一个叫做MySQL的npm包,这个包是官方提供的,稳定性是可以保证的,当然,也还有其他的npm包,这里我们只使用mysql包。安装的方法很简单了,输入指令 npm install mysql --save,等待下载完成.

看到这个样子,那就是安装成功了。

然后我们打开db.js文件,在里面写入数据库中操作必须的一些代码,看下图:

代码很少,意思也很明显,第一步需要引入以mysql包,然后我们创建一个空对象,并且给他赋值一个叫query的方法,这个方法接受两个参数,第一个参数是你查询数据时候的sql语句,第二个参数是获取查询结果的回调函数。

再看函数内部,第一块代码是用来设置操作mysql的配置的:

host表示mysql安装的地址,因为我是本地的数据库,所以直接使用localhost

user表示mysql的用户名

password表示mysql的密码

Node.js与MySQL交互操作及其注意事项(nodejs和mysql)

database表示你要选择操作的具体的库的名字

port表示端口,可不填,默认就是

mysql.createConnection的返回值connection是我们接下来操作mysql的一个具体的对象,所有的操作方法都是基于他的。

调用connection的connect方法判断连接是否成功,如果失败,则把错误信息打印出来,并且停止运行。

调用connection的query方法来直接向数据库发送sql语句,并且把用回调函数返回结果,其中回调函数中有三个参数,第一参数是错误对象,如果操作失败,则会停止并打印错误信息,第二参数是具体的返回的结果,正常情况下是一个数组,里面包含很多json,第三个参数也是一个数组,里面包含着最每个数据的解释,比如当前数据属于哪个库,那张表等等。我们使用最多的自然是第二个参数了

当数据库操作结束以后关闭连接

整个过程很简单,只是其中有两个问题,第一个是数据库连接丢失的问题,不知道有没有人碰到过,第一次访问首页的时候,连接数据库正常,第二次访问首页,数据库连接不上了,会报错说连接丢失。这个原因是我们每操作完一次数据库就关闭了数据库连接,再次访问的时候就找不到连接了,但是连接又不能不关闭,有人可能觉得奇怪,每次访问首页时候都会访问db.js文件,不是每次都会有一个新连接产生吗?是的,只是我最开始的时候生成连接的那段代码并没有放到db.query的函数中,而是放在外面,如下图:

这样就导致连接只生成一次,关闭了以后,第二采访得不到连接。把它放在函数里面以后,使用exports对外暴露接口。每次访问首页,都会重新走一遍创建连接的过程,每次都能拿到一个新的连接,这样访问就没有问题了。其实项目中可以直接使用连接池。省去了很多麻烦。

第二个问题是我们在server.js中引入了db.js

此时大家可能看到了,mysql.query有两个参数,第一个是sql,第二个是回调函数,回调函数有一个result的参数,其实他就是数据库查询出来的结果。有人会说为什么不直接在db.js中使用return,把查询结果返回,搞什么回调啊!

其实这里就是node.js的异步造成的一些问题了,如果我们把server.js中的代码改成下图

因为我们看到了mysql包的query方法是异步操作,这就导致下面的res.render()方法不会等待他把结果查询出来以后再执行,往往是结果还没出来,就已经开始渲染页面,但是数据又没有得到,所以就会报错了。因此只好传送了一个回调函数进去,在mysql的query方法结束以后,把结果通过参数传入到我们自己写的回调函数中,这样我们就能在回调函数里得到结果了。然后再执行渲染。当然处理这个问题还可以引入第三方包 async来解决异步问题,具体看个人了。

阿里云ecs服务器中安装部署node.js的步骤 首先下载了putty用来连接服务器的控制台,还有flashFXP用来上传文件。下面是详细的步骤,一起来看看。1.下载node.js下载地址:node.js千万不要用命令行下

node.js实现博客小爬虫的实例代码 前言爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。这篇文章介绍的

Node.js的环境安装配置(使用nvm方式) 前言神奇的node.js为我们JavaScript提供了在后端运行的环境,而它的包管理器npm(nodepackagemanage)现在也成为了全球最大的开源库生态系统.我们有很多很多的工

标签: nodejs和mysql

本文链接地址:https://www.jiuchutong.com/biancheng/370808.html 转载请保留说明!

上一篇:利用Node.js获取项目根目录的小技巧(node.js获取文件信息的方法是什么)

下一篇:阿里云ecs服务器中安装部署node.js的步骤(阿里云ecs keepalived)

  • 当月认证了进项票没用完下个月还可以用吗
  • 企业所得税的会计处理
  • 运输开票的税点是多少
  • 收到退回的款项怎么做分录
  • 公司购买金蝶属于什么费用
  • 印花税是按开票收入申报的吗
  • 减免所得税优惠明细表怎么填
  • 印花税核定征收管理办法
  • 企业所得税年报过了申报期还能修改吗
  • 月初认证的增值税发票可以吗
  • 外商投资企业提取储备基金
  • 清算期间,公司是否可以经营
  • 汇票贴息入什么科目
  • 发生销货退回增值税专用发票如何处理
  • 计入增值税应税销售额
  • 赠送给客户
  • 哪些税种可以税前扣除
  • 一般纳税人和小微企业的区别
  • 营改增房租增值税税率
  • 固定资产机器设备使用年限
  • 职工福利费发票开票范围
  • 季度申报财务报表如何更改
  • 应向客户收取的出租包装物租金
  • 补缴员工社保银行怎么查
  • 流转税与所得税的区别
  • 本年利润的借贷双方表示什么
  • 企业所得税季度预缴可以弥补以前年度亏损吗
  • 租税联动政策
  • 委托发行股票会亏本吗
  • 没有对公账户怎么办
  • win10无法设置pin码怎么办
  • 怎样找此电脑
  • 小规模纳税人可以开增值税专用发票吗
  • 公司运输车辆加油会计分录
  • packethsvc.exe - packethsvc是什么进程 有什么用
  • php 数字转中文
  • php使用pdo连接数据库
  • 无发票材料可以入材料账吗
  • 营业外支出包括哪些科目
  • 网络延迟高不稳定怎么办
  • 销售材料计提存入什么
  • 土地增值税清算管理规程
  • 除甲醛的净化器哪个品牌做得最好
  • 企业发放误餐补助需要票据吗
  • 快速制作一个演示文稿可用什么
  • 小规模纳税人结转税金分录
  • linuxulator
  • 结算应付职工薪酬影响当期损益吗
  • 注销营业执照的电话号码是多少
  • 稿费支付方式怎么填
  • 采购货未到收到发票
  • 付报刊费计入什么科目
  • python中删除字典里的空项目
  • mongodb数据库中使用哪个数据库可以设置用户名和密码
  • 个人重组债务怎么交税
  • 有哪些业务可以和公交公司合作的
  • 减免税款借贷方表示
  • 房产税的征收范围和标准有哪些
  • 银行存款对账方法
  • 抵扣进项税额是啥意思
  • 劳务报酬的增值税起征点
  • 个税申报当月申报了上月应发工资怎么调整
  • 公司缴纳残保金查询怎么查
  • 现金流量明细表怎么看
  • 机票退票手续费太贵怎么办
  • 存货账面价值的确定
  • 装修公司做账涉及科目
  • mysql如何优化性能
  • win10edge浏览器默认主页网址
  • freebsd怎么安装软件
  • Solaris 10.0 cvs的安装方法
  • Linux dpkg-query 命令用法详解(Debian Linux中软件包的查询工具)
  • linux ids
  • javascript怎么设置
  • unity shaders and effects cookbook
  • unity物体移动速度怎么设置
  • 简单介绍自己的名字由来
  • unity shader saturate
  • 软件销售增值税优惠
  • 湖北省电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设