connection.query(...).then 不是函数
Posted
技术标签:
【中文标题】connection.query(...).then 不是函数【英文标题】:connection.query(...).then is not a function 【发布时间】: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(qry, function (err, rows, fields)
);
正确执行。 简单的查询我没有遇到任何问题。在执行复杂查询时,上述查询不等待完整的查询执行
【问题讨论】:
我认为 Mysql.query 不是一个promise函数。 Mongo DB 是和其他的,但 MySQL 不是。见这里:codeburst.io/node-js-mysql-and-promises-4c3be599909b 【参考方案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!:)');
);
【讨论】:
以上是关于connection.query(...).then 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
connection.query 不是一个函数 Node.js MySQL
JS 无法查询 MySQL 数据库。错误:connection.query 不是函数