我正在尝试简化一个mysql函数,但是当我运行它时,控制台显示这个错误util.Promisify is not a function
。这是我的代码:
var util= require('util');
var mysql= require('mysql');
var conection=mysql.createConnection({
host:'localhost',
user:'root',
password:'616897',
database:'proyect'
});
var query = util.promisify(conection.query);
query(data.valida_user).then((rows)=>{
console.log(rows);
}).catch((error)=>{
console.log(error);
})
如果为var query = util.promisify(mysql.query);
,则会出现相同的错误
我是个编程新手,但我正在努力学习。
发布于 2018-03-13 15:29:52
如果你愿意,你可以自己承诺:const promisify = f => (...args) => new Promise((a,b)=>f(...args, (err, res) => err ? b(err) : a(res)));
发布于 2018-03-20 10:19:23
Util是从Node8.x开始包含的,所以如果你可以更新Node,我会这么做的。
发布于 2017-11-06 00:53:02
下面的示例应该适用于您:
async () => {
const connection = await (util.promisify(pool.getConnection).bind(pool))();
const fn2 = util.promisify(connection.query).bind(connection);
const rows = await fn2('SELECT col1, col2 FROM Users WHERE email = ?', [email]);
connection.release();
return rows;
}
此示例使用Node.js的标准MySQL模块。util.promisify是Node.js的内置实用程序。使用节点8。
代码被包装到一个异步函数中。在它的第一行中,回调函数‘pool.getConnection’被转换为promises,并通过附加的‘await’语句立即调用。这将创建一个异步函数序列,并返回一个值(一个连接),而不是一个函数或承诺。下一行对‘conection.query’执行相同的操作,但为了简单起见将代码拆分为两个语句。最后,该函数像任何同步函数一样返回查询结果。
https://stackoverflow.com/questions/46476741
复制相似问题