为什么变量在nodejs中未定义

时间:2018-02-14 10:34:43

标签: node.js express

我正在使用节点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;
    });
}

2 个答案:

答案 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节点在转到下一行之前不等待查询完成。