节点Jscallback函数

我想返回节点js中的数据库值,并作为ejs文件中的variables传递。

贝娄是我使用的代码。 它没有返回值。

function getExternalLocation(cb) { mssql.connect(msSqlSettings, function (err ) { if (err) { cb(err); } var getQuery = "SELECT [Title] FROM [dbo].[StyleTemplates] " ; //console.log(getQuery); var request = new mssql.Request(); // query to the database and get the data request.query(getQuery, function (err, rows) { mssql.close(); cb(err, rows); }); }); } exports.eejsBlock_editbarMenuLeft = function (hook_name, args, cb) { var userData = getExternalLocation(args, function(err, rows) {}); args.content = args.content + eejs.require( 'ep_resources/templates/editbarButtons.ejs', { userData: userData }); return cb(); }) 

userData没有返回任何值。

 var userData = getExternalLocation(args, function(err, rows) {}); 

我不认为userData会在asynchronous函数中获得正确的数据,没有等待,所以你可以尝试在callback中获取数据。

 getExternalLocation(args, function(err, rows) { var userData = rows; args.content = args.content + eejs.require( 'ep_resources/templates/editbarButtons.ejs', { userData: userData }); });