Node中使用mysql模块遇到的问题
Node的mysql模块,本人的感受就是不好用,各种报错,各种坑,有一个问题困扰了我很久,也不知道是不是我使用的方式不对,不过后来用easymysql模块解决了,我才深信这是一个坑。
问题描述:
假设有这么一个数据表table,它有两个字段index和name,在localhost:3000主页有一个按钮,上面写着“更新”,当我点击更新后会POST到localhost:3000/update,然后后台连接数据库进行更新操作每一条记录的name为“gdt”,更新完毕后回到主页,再重新按一下“更新”按钮,就会报错误,如下:
“{ [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false }”
下面代码,省略了模块的引入以及数据库的连接操作,我使用的是异步流程控制Async来使得异步查询变成同步查询,在流程结束的最后connection会end,路由会重定向到localhost:3000,讲道理的话当我重新按“更新”按钮时会继续进行更新操作,而不是报错
exports.update = function(req, res) {
//获得需要所有记录信息
function getInfo() {
return new Promise((resolve, reject) => {
connection.query('SELECT `index`,`name` from table', function(err, result) {
if (err) {
console.log(err);
} else {
resolve(result);
}
})
})
}
// 将每一项的名字更新为gdt
function updateName(info) {
return new Promise((resolve, reject) => {
var index = info['index'];
connection.query("UPDATE `table` SET `tableB`.`name` = 'gdt' WHERE `table`.`index` =?", index, function(err, result) {
if (err) {
console.log(err);
} else {
resolve('更新成功');
}
})
})
}
async function update() {
let result = '';
//筛选出在公屏发言出现的环球uid和其对应的index
var getinfoResult = await getInfo();
for (let i = 0; i < getinfoResult.length; i++) {
var updateResult = await updateName(getinfoResult[i]);
console.log(updateResult);
}
return result?result:'success';
}
update().then(function(result) {
console.log(result);
//断开数据库连接
connection.end();
//回到主页
res.redirect('/');
})
}
这个问题我查阅了好多资料,问了好多人都没有得到解决,后来改用了easymysql模块就解决了,异步流程控制结束后页面重定向到首页,重新按下“更新”会执行更新操作,不会报错!
上面的代码并没有改成easymysql的语法,关于easymysql的用法可以参阅 https://github.com/aleafs/easymysql,不过还是建议Node项目结合像MongoDB这样的NoSQL数据库,要不是公司业务要求我是不会使用mysql的,囧~
Node中使用mysql模块遇到的问题的更多相关文章
- node.js使用mysql模块的坑
之前用node.js写的订餐系统,很容易挂掉,一直也没想去解决它.今天看了一下,试了试,原因是在连接数据库的时候没有对error事件进行处理,导致程序一直挂在那里,需要重启服务才能正常使用. ...
- 常用SQL语句及在node中使用MySQL
摘要:一些重要的SQL命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREA ...
- Node中使用MySQL报错:TypeError: Cannot read property 'query' of undefined
Node中使用MySQL报错: TypeError: Cannot read property 'query' of undefined at /Users/sipeng/Desktop/彭思/201 ...
- Node中的net模块提供的前端通信
Node中的net模块提供的前端通信 客户端 业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器 解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 [ 单行读取 ...
- 关于node中两个模块相互引用却不会死循环的问题
关于node中两个模块相互引用却不会死循环的问题 node中是通过require来导入加载模块的,require有两个作用: 1.加载文件模块并执行里面的代码 2.拿到被加载文件模块导出的接口对象 现 ...
- 在Node.js使用mysql模块时遇到的坑
之前写了个小程序Node News,用到了MySQL数据库,在本地测试均没神马问题.放上服务器运行一段时间后,偶然发现打开页面的时候页面一直处于等待状态,直到Nginx返回超时错误.于是上服务器检查了 ...
- Node中的http模块
通过Node模块,我们可以实现客户端和服务器端.这篇文章主要研究如何利用http和一些相关模块构建客户端和服务器端代码.读完本文,将能够实现client向server发送数据,而server将数据原样 ...
- Node中require第三方模块的规则
Node.js中使用CommonJs模块化机制,通过npm下载的第三方包,我们在项目中引入第三方包都是:let xx = require('第三方包名'),究竟require方法加载第三方包的原理机制 ...
- node中npm安装模块的网络问题
最近使用node开发时,发现所有的依赖模块都安装不了啦,一直报错如下 rollbackFailedOptional: verb npm-session 5a4a66a1b8d06dc3 后来才发现是由 ...
随机推荐
- Python——selenium爬取斗鱼房间信息
from selenium import webdriver import os import json import time class Douyu: def __init__(self): # ...
- vue中axios的使用与封装
分享下我自己的axios封装axios是个很好用的插件,都是一些params对象,所以很方便做一些统一处理 当然首先是npm安装axios 很简单$ npm install axios --save在 ...
- php代码书写习惯优化小结
(1)使用 static 静态方法比普通方法快4倍(2)echo输出快于print(3)连接字符使用 , 代替 .(4)循环之前先取出最大值,而不是在循环里面取值 正确的方法 $max ...
- 自已的sql server练习小记
print getdate(); print datediff(year,'1987-09-13',getdate()) select * from CallRecords select top 5 ...
- 百度地图中使用mouseover事件获取经纬度时无法拿到鼠标所在位置的经纬度。
用百度2.0的话使用mousemove 鼠标在地图区域移动过程中触发此事件.mouseover参数e中没有point参数
- .Net Core 使用swagger UI
swagger UI 第一步:首先添加包Swashbuckle.AspNetCore (可通过微软添加包命令Install-Package 包名进行添加,也可以通过管理NuGet程序包进行添加) 第二 ...
- 警告"System.Configuration.ConfigurationSettings.AppSettings”已过时,解决办法
解决办法: 直接把ConfigurationSettings写成ConfigurationManager,但是提示没有ConfigurationManager语句.
- nginx(二)-反向代理
什么是反向代理? 我们看图说话,我们用电脑访问谷歌,由于防火墙的存在,我们并不能直接访问.需要借助VPN来实现.这就是一个简单的正向代理的例子.这里你能够发现,正向代理“代理”的是客户端,而且客户端是 ...
- 【中间件】IIS短文件名枚举漏洞
1.1.1 漏洞描述 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名. 在Windows下查看对应的短文件名,可以使用命令 ...
- 论文阅读 | STDN: Scale-Transferrable Object Detection
论文地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Zhou_Scale-Transferrable_Object_Detection ...