connection.query(…).then不是函数

lqfhib0f  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(355)

我是新的节点js。我在后端使用node和express,mysql作为数据库。我在处理异步调用时感到困惑。在我使用的代码中。

  1. return connection.query(qry).then(
  2. function(result) {
  3. console.log('Query executed');
  4. resolve(result.rows[0]);
  5. },
  6. function(err) {
  7. console.log('Error occurred', err);
  8. reject(err);
  9. }
  10. )

我得到错误连接。查询(…)。then不是函数

  1. connection.query(qry, function (err, rows, fields) {
  2. });

正确执行。简单的询问我没有任何问题。在执行复杂查询时,上面的查询不是等待完整的查询执行

cuxqih21

cuxqih211#

使用 .then() 首先使用mysql,您需要“promisify”数据库客户机。这可以通过为mysql客户机创建 Package 类来完成。
查看这篇文章以获得更好的理解

w8rqjzmb

w8rqjzmb2#

您需要导入mysql,并实际创建连接。
只要做:

  1. var mysql=require('mysql');
  2. var connection=mysql.createConnection({
  3. host:'127.0.0.1',
  4. port: '3306',
  5. user:'root',
  6. password:'12345',
  7. database:'db'
  8. });
  9. connection.connect(function(error){
  10. if(!!error){
  11. console.log(error);
  12. }else{
  13. console.log('Connected!:)');
  14. }
  15. });
展开查看全部
u0sqgete

u0sqgete3#

我还没发现,我们可以用承诺来配合 connection.query('') 功能。根据mysqljs文档,我们可以传递回调函数来获取结果。

  1. var mysql = require('mysql');
  2. var connection = mysql.createConnection(...);
  3. connection.query('SELECT * FROM table_name', function (error, results, fields) {
  4. if (error) throw error;
  5. console.log(result);
  6. });

相关问题