【问题标题】:NodeJS, wait.for module and mysql queryNodeJS、wait.for 模块和 mysql 查询
【发布时间】:2014-11-14 07:00:07
【问题描述】:

尝试使用带有 mysql 查询的 wait.for 模块(可以通过回调来实现,但如果能够通过 'wait.for' 来实现就好了)

我知道sql连接查询是非标准的,所以不知道怎么转换。

var getUserQuery = "SELECT * FROM x WHERE id= '5'";
connection.query(getUserQuery, function(err, rows, fields){
     ....
});

在我的代码继续执行之前,我将如何等待获取 this 的行?

link to module 'wait.for'

我不理解的部分在该页面的底部 - (关于非标准回调的使用说明。例如:connection.query from mysql )。

【问题讨论】:

  • 了解如何编写适当的异步代码 - 在 node.js 中没有其他方法。您可以使用许多库之一来帮助您(promises、async 等),但最终您需要编写良好、干净、可维护的异步代码。尝试避免它无济于事。
  • 这只是一个如何使用某个模块的问题,我想尝试一下它是如何工作的。
  • 也许如果你链接到模块(我无法通过搜索找到它,所以不知道它是做什么的),你可能会让更多人愿意研究它。
  • 好的,我在帖子中添加了链接^
  • 这里有一堆数据库示例:bjouhier.wordpress.com/2012/03/11/…

标签: node.js node-modules


【解决方案1】:

https://github.com/luciotato/waitfor#notes-on-usage-on-non-standard-callbacks-eg-connectionquery-from-mysql

关于非标准回调的使用说明。例如:来自mysql的connection.query

wait.for 期望标准化的回调。标准化的回调始终按该顺序返回 (err,data)。

对于 sql.query 方法和其他非标准回调的解决方案是创建一个标准化回调的包装函数,例如:

 connection.prototype.q = function(sql, params, stdCallback){ 
             this.query(sql,params, function(err,rows,columns){ 
                                 return stdCallback(err,{rows:rows,columns:columns}); 
                         });
 }

用法:

try {
  var getUserQuery = "SELECT * FROM x WHERE id= ?";
  var result = wait.forMethod(connection, "q", getUserQuery, ['5']); 
  console.log(result.rows);
  console.log(result.columns);
} 
catch(err) {
   console.log(err);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2021-12-22
    • 2015-10-24
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多