我正在尝试连接mysql,但它显示我req.getConnection is not a function
贝娄是我用过的代码snipet。
在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中很新,所以可能我错过了一些东西。
如果你想查看我的完整软件包,请按照下面的URL,我已经在我的git存储库中推送所有代码 https://github.com/chiraggmodi/nodeCrud
答案 0 :(得分:1)
你需要移动这一行:
app.use(connection(mysql, dbOptions, 'request'));
现在,它已在路由之后声明,这意味着请求永远不会通过它(Express的工作方式:请求通过中间件和路由传递处理程序按其声明的顺序)。
如果您在需要req.getConnection()
工作的路线(可能是here)之前将其用于代码中的某个位置,请求首先将通过{{1然后将中间件和然后传递给路由处理程序,确保express-myconnection
在这些路由处理程序中可用。
编辑:仔细观察,您的客户路线也不正确。
你有这个:
req.getConnection()
但是router.get('/', function(req, res, next) {
res.render('customers', customers.list);
});
本身就是一个路由处理程序,而不是你应该传递给customer.list
的东西。相反,试试这个:
res.render()
(同样适用于customers_route.js
中的所有其他路线)