node express api报错

发布于 2022-09-06 21:03:58 字数 1946 浏览 6 评论 0

这是请求的方法

app.get('/api/:id', function (req, res) {
    connection.connect();
    connection.query('SELECT * from testmodel_url WhERE id='+req.params.id, function(err, rows, fields) {
        if (err) throw err;
        let obj={
            'status':200,
            'message':'success',
            'data':rows
        }
        res.json(obj)
    });
    connection.end();
});

使用postman第一次请求可以获得正确的结果

clipboard.png

再次请求就会报错

clipboard.png

events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: Cannot enqueue Handshake after invoking quit.
    at Protocol._validateEnqueue (C:\bin\pro\express\node_modules\_mysql@2.15.0@
mysql\lib\protocol\Protocol.js:204:16)
    at Protocol._enqueue (C:\bin\pro\express\node_modules\_mysql@2.15.0@mysql\li
b\protocol\Protocol.js:139:13)
    at Protocol.handshake (C:\bin\pro\express\node_modules\_mysql@2.15.0@mysql\l
ib\protocol\Protocol.js:52:23)
    at Connection.connect (C:\bin\pro\express\node_modules\_mysql@2.15.0@mysql\l
ib\Connection.js:130:18)
    at C:\bin\pro\express\index.js:29:16
    at Layer.handle [as handle_request] (C:\bin\pro\express\node_modules\_expres
s@4.16.3@express\lib\router\layer.js:95:5)
    at next (C:\bin\pro\express\node_modules\_express@4.16.3@express\lib\router\
route.js:137:13)
    at Route.dispatch (C:\bin\pro\express\node_modules\_express@4.16.3@express\l
ib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\bin\pro\express\node_modules\_expres
s@4.16.3@express\lib\router\layer.js:95:5)
    at C:\bin\pro\express\node_modules\_express@4.16.3@express\lib\router\index.
js:281:22

这是为什么呢求解答 0.0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

傲鸠 2022-09-13 21:03:58

你要在每个请求完成之后调用 createConnection 再一次创建一个新的连接实例,就是类似于工厂函数,你得在响应请求函数的第一句再一次调用你创建你的connection的方法,为新请求再创建一个连接实例

葵雨 2022-09-13 21:03:58

把connection.end();去掉
参考http://blog.csdn.net/luominti...

仙气飘飘 2022-09-13 21:03:58

从文字上讲connection.query是异步操作,为什么没返回结果就执行connection.end();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文