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

标签 javascript mysql node.js express

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

相关文章:

php - Mysql UPDATE查询,保持现有值为NULL

c# - MySQL 连接抛出空引用

javascript - 在 Electron 中单击按钮重新打开 BrowserWindow 后对象已被销毁异常

node.js - 如何在不重启服务器的情况下将expressjs静态模板部署到AWS?

javascript - 将 HTML 表单输入到表格中

javascript - 在html5主体中动态设置变量?

mysql - MySQL中如何确定一组的第一个结果?

javascript - 将 jquery 响应分配给最近 tr 中类名的 div

javascript - 为什么嵌入后没有应用 css 样式?

javascript - URI 模板 : Is there an rfc-6570 implementation in javascript?