node js 回调方法怎么获取返回值?
先上代码:
db_mysql.js
/** Import mysql module */
var mysql = require('mysql');
var DBConfig = require('./db_config');
/** create mysql connection pool */
var pool = mysql.createPool( DBConfig.mysql );
exports.do = function ( sql, callback) {
pool.getConnection(function (err, connection) {
connection.query(sql, function () {
callback.apply(connection, arguments);
connection.release();
});
});
}
article.js
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var db = require('../db/db_mysql');
/** 查询结果的回调函数 */
var callFunc = function (err, result, fields) {
console.log(err);
console.log(result);
console.log(fields);
}
router.get('/test', function (req, res, next) {
var querySql = 'SELECT * FROM cp_tag WHERE tid=1';
db.do(querySql, callFunc);
// 这里怎么拿到callFunc 的err, result??? 因为下面res 要返回数据
console.log('------------response');
});
module.exports = router;
问题:
- 在
article.js
中,执行完db.do(querySql, callFunc)
之后应该是处理查询结果准备返回请求结果数据了,但这里callFunc是回调, 又是异步执行,请问该怎么拿到callFunc的数据库查询结果呢?请针对以上描述的问题场景回答
,因为换一种方式(比如连接数据查询就不要回调)我也知道怎么处理,我只想请教只针对于这种情况的解决方法,谢谢各位大神!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
1 把callFunc挪下来
2 async/await/Promise
一定要异步回调解决的话,可能就只能把res也放进回调了吧。【于是乎陷入了回调地狱?】
为什么不考率用一些 orm 库 比如 knex sequelize