Node.js:查看从模型调用的控制器中的数据

时间:2017-01-06 06:39:47

标签: javascript node.js

我想从模型中分配数据返回,然后在console.log上我只看到 undefined

我的代码是:

var dmodel  = require('../models/database');
dmodel.myfunction(request,response, function (err, user) {
         console.log(user); // see data
});

然后我修复代码:

var dmodel  = require('../models/database');
var userinfo;
dmodel.myfunction(request,response, function (err, user) {
            userinfo = user;
});
console.log(userinfo); // undefined, not see data

怎么做?谢谢大家

这是我的功能:

module.exports = {
    myfunction: function (request,response, callback) {
        var query = "select * from mytable";
        //call functionexcecute query
        executeQuery(query, function (err, rows) {
            if (!err) {           
                var user = rows;            
                callback(null, user);
            } else {
                console.log(err);
            }
        });
    }
};

2 个答案:

答案 0 :(得分:0)

由于javascript的异步性质,在调用回调函数之前,代码 console.log(userinfo)正在执行。
修改后的代码:

var dmodel  = require('../models/database');
var userinfo;
dmodel.myfunction(request,response, function (err, user) {
        userinfo = user;
        console.log(userinfo);
});    

也就是说,您之前的代码是正确的。如果打印的值仍然是未定义,则表示函数 executeQuery 的定义存在一些问题。

答案 1 :(得分:0)

您可以使用等待第一个函数完成执行的.then承诺

 var dmodel  = require('../models/database');
    var userinfo= {};
    dmodel.myfunction(request,response, function (err, user) {
                userinfo = user;
                return userinfo;
    }).then(function(data){
    console.log(userinfo);
    })