Node Js回调返回函数

时间:2017-07-01 10:07:57

标签: javascript node.js

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

Bellow是我用的代码。 它没有返回值。

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没有返回任何值。

1 个答案:

答案 0 :(得分:1)

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

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

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