我想从模型中分配数据返回,然后在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);
}
});
}
};
答案 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);
})