我正在使用节点js express并从控制器调用模型。当我调用模型表单控制器并在结果变量中获取结果并将其打印在console.log(result)
时undefined
。
控制器
var user_model=require('../models/user');
exports.get_user = function(req, res) {
var result = user_model.get_users();
console.log(result);
}
型号
var connection=require('../config/connection');
exports.get_users = function() {
connection.query('SELECT * FROM users', function(err, rows) {
if(err) {
retrun err;
}
return rows;
});
}
答案 0 :(得分:1)
使用promise来处理异步调用
// **Controller**
var user_model = require('../models/user');
exports.get_user = function (req, res) {
user_model.get_users().then((result) => {
console.log(result);
}).catch(err => console.log(err));
}
// **Model**
var connection = require('../config/connection');
exports.get_users = function () {
return new Promise((resolve, reject) => {
connection.query('SELECT * FROM users', function (err, rows) {
if (err) {
reject(err);
}
resolve(rows);
});
}
})
}
答案 1 :(得分:1)
这种情况正在发生,因为您在查询完成之前安慰了结果。节点是异步的。不像php节点在转到下一行之前不等待查询完成。