【问题标题】:connection.query(...).then is not a functionconnection.query(...).then 不是函数
【发布时间】:2019-02-10 12:49:21
【问题描述】:

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

return connection.query(qry).then(
        function(result) {
          console.log('Query executed');
          resolve(result.rows[0]);
        },
        function(err) {
          console.log('Error occurred', err);
          reject(err);
        }
  )

我收到错误 connection.query(...).then 不是函数

connection.query(qry, function (err, rows, fields) {

});

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

【问题讨论】:

标签: mysql node.js express


【解决方案1】:

要首先将.then() 与mysql 一起使用,您需要“承诺”数据库客户端。这可以通过为MySQL 客户端创建一个包装类来完成。
检查此article 以获得更好的理解

【讨论】:

    【解决方案2】:

    我还没有发现,我们可以使用带有connection.query('') 函数的promise。根据 mysqljs 文档,我们可以传递回调函数来获取结果。

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

    【讨论】:

      【解决方案3】:

      你需要导入mysql,还要实际创建连接。

      只要做:

        var mysql=require('mysql');
          var connection=mysql.createConnection({
            host:'127.0.0.1',
            port: '3306',
            user:'root',
            password:'12345',
            database:'db'
          });
      
          connection.connect(function(error){
            if(!!error){
              console.log(error);
            }else{
              console.log('Connected!:)');
            }
          });
      

      【讨论】:

        猜你喜欢
        • 2019-01-06
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2020-11-12
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        相关资源
        最近更新 更多