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

时间:2017-04-20 12:53:41

标签: javascript mysql node.js express

我正在尝试连接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

1 个答案:

答案 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中的所有其他路线)