gpt4 book ai didi

javascript - req.getConnection 不是express-myconnection 中的函数

转载 作者:行者123 更新时间:2023-11-29 10:52:12 25 4
gpt4 key购买 nike

我正在尝试连接 mysql,但它显示req.getConnection 不是一个函数下面是我使用过的代码片段。在app.js

var mysql = require('mysql'), 
connection = require('express-myconnection'),
dbOptions = {
host: 'localhost',
user: 'root', password: '',
port: 3306,
database: 'nodejs'
};
app.use(connection(mysql, dbOptions, 'request'));

在 Customers.js 中

exports.list = function(req, res, next) { 
req.getConnection(function(err, connection) {
if (err) return next(err);
connection.query('SELECT * FROM customer', function(err, rows) {
if (err) console.log("Error Selecting : %s ", err);
res.render('customers', {
page_title: "Customers - Node.js", data: rows
});
});
});
};

您能检查一下哪里做错了吗?我对 Nodejs 还很陌生,所以可能我遗漏了一些东西。

如果你想查看我的完整包,请关注以下网址,我已将所有代码推送到我的 git 存储库中 https://github.com/chiraggmodi/nodeCrud

最佳答案

您需要移动此行:

app.use(connection(mysql, dbOptions, 'request'));

现在,它是在您的路由之后声明的,这意味着请求永远不会通过它(这就是 Express 的工作原理:请求按照声明的顺序通过中间件和路由处理程序传递)。

如果您将其用于代码中需要 req.getConnection() 才能工作的路由之前的位置(可能是 here ),则请求将首先通过通过 express-myconnection 中间件和 then 传递给路由处理程序,确保 req.getConnection() 在这些路由中可用处理程序。

编辑:仔细观察,您的客户路线也不正确。

你有这个:

router.get('/', function(req, res, next) {
res.render('customers', customers.list);
});

但是 customer.list 本身就是一个路由处理程序,而不是您应该传递给 res.render() 的内容。相反,试试这个:

router.get('/', customers.list);

(对于 customers_route.js 中的所有其他路线也类似)

关于javascript - req.getConnection 不是express-myconnection 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43520132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com