nodejs-无法从辅助函数中获取数据

我为我的项目使用ExpressJS 4,它遵循MVC体系结构。 我创build了一个帮助器,可以编写从DB(DRY方法)查询数据的常用函数,这些函数可以从任何控制器访问。 我能够调用帮助函数并将数据传递给它,但我无法从中查询数据库。

以下是我的控制器( dumyController.js )的示例:

 'use strict'; var dbHelpers = require('../helpers/helpers'); exports.dummyFunction = function (req, res) { var id=165; var abc = dbHelpers.dummyHelperFunction(iddd); console.log(abc); }; 

正如你所看到的,我正在调用控制器中的帮助器function。 这是一个helper样例( helpers.js

 var db = require('../db'); module.exports = { dummyHelperFunction: function (passvar) { var params = [passvar]; var query = `SELECT email FROM members where id=?`; return db.query(query, params); } }; 

如果您想知道我的数据库连接是否有问题,则不存在相关问题。 不过,分享它( db.js

 var mysql = require('mysql'); var connection = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '', database: 'dumyDB' }); module.exports = connection; 

我试图获取MySQL查询返回的结果,但这是我得到的时候我console.log它。

 Query { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, _callback: undefined, _callSite: Error at Pool.query (_PROJECT-PATH_\node_modules\mysql\lib\Pool.js:199:23) at Object.dummyHelperFunction (_PROJECT-PATH_\helpers\helpers.js:18:15) at exports.dummyFunction (_PROJECT-PATH_\controllers\dumyController.js:227:25) at Layer.handle [as handle_request] (_PROJECT-PATH_\node_modules\express\lib\router\layer.js:95:5) at next (_PROJECT-PATH_\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (_PROJECT-PATH_\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (_PROJECT-PATH_\node_modules\express\lib\router\layer.js:95:5) at _PROJECT-PATH_\node_modules\express\lib\router\index.js:281:22 at Function.process_params (sam_PROJECT-PATH_ple\node_modules\express\lib\router\index.js:335:12) at next (_PROJECT-PATH_\node_modules\express\lib\router\index.js:275:10), _ended: false, _timeout: undefined, _idleNext: null, _idlePrev: null, _idleStart: null, _idleTimeout: -1, _repeat: null, sql: 'SELECT email FROM members where id=?', values: [ 165 ], typeCast: true, nestTables: false, _resultSet: null, _results: [], _fields: [], _index: 0, _loadError: null } 

改变你的代码,如下所示。 db.query()是asynchronous的

调节器

 'use strict'; var dbHelpers = require('../helpers/helpers'); exports.dummyFunction = function (req, res) { var user = { passvar: 165 }; dbHelpers.dummyHelperFunction(user, function (err, rows) { if (err) { res.json({ success: false, message: 'unable to fetch' }); } else { res.json({ success: true, values: rows }); } }); }; 

帮手

 var db = require('../db'); module.exports = { dummyHelperFunction: function (param, callback) { var params = [param.passvar]; var query = `SELECT email FROM members where id=?`; return db.query(query, params, callback); } };