首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NodeJs util.promisify不是函数

NodeJs util.promisify不是函数
EN

Stack Overflow用户
提问于 2017-09-29 03:18:18
回答 5查看 33.5K关注 0票数 26

我正在尝试简化一个mysql函数,但是当我运行它时,控制台显示这个错误util.Promisify is not a function。这是我的代码:

代码语言:javascript
复制
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);,则会出现相同的错误

我是个编程新手,但我正在努力学习。

EN

回答 5

Stack Overflow用户

发布于 2018-03-13 15:29:52

如果你愿意,你可以自己承诺:const promisify = f => (...args) => new Promise((a,b)=>f(...args, (err, res) => err ? b(err) : a(res)));

票数 4
EN

Stack Overflow用户

发布于 2018-03-20 10:19:23

Util是从Node8.x开始包含的,所以如果你可以更新Node,我会这么做的。

票数 4
EN

Stack Overflow用户

发布于 2017-11-06 00:53:02

下面的示例应该适用于您:

代码语言:javascript
复制
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’执行相同的操作,但为了简单起见将代码拆分为两个语句。最后,该函数像任何同步函数一样返回查询结果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46476741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档