javascript - 无法从nodejs + node-mysql 中的模块获取返回

标签 javascript mysql node.js node-mysql

我在本地主机上得到以下代码:

/model/company.js

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'admin'
});

module.exports = {
    get: function(){
        connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
            return rows;
        })
    }       
}

/routes/company.js

var Company    = require('../models/company')


var express = require('express');
var router = express.Router();

router.route('/companies').get(function(req, res){

    console.log(Company.get());
    //res.json(Company.get());


})

我已经尝试过一些事情,但我认为事情应该是这样的。 但我的 console.log 返回了 undefined。我不知道我做错了什么。

如果我这样做:

 connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
                console.log(rows)
            })

它有效。

我需要做什么(或学习)?

最佳答案

您的 get 函数返回 undefined,因为您没有指定返回值。您为回调函数指定了一个返回值,但您的外部函数不知道也不关心它。如果您想要预期的行为,则需要将回调传递给 get 函数,以访问 rows 变量。

试试这个:

 module.exports = {
    get: function(callback){
        connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
            // A 'node-style' callback will usually be callback(error, value)
            callback(null, rows);
        })
    }       
}

如果你这样做,你的console.log将会工作:

Company.get(function(error, rows){
  console.log(rows);
}

有关 javascript 中异步行为的一般概述,请查看 this answer .

关于javascript - 无法从nodejs + node-mysql 中的模块获取返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311806/

相关文章:

javascript - 不同页面调用不同的jQuery/JS

php - MYSQL搜索术语中匹配的字母

angularjs - Satellizer 和推特登录

Javascript split 不是一个函数

javascript - 在两个单选按钮之间切换

mysql - 如何在 MySQL 数据库中提供来自多个供应商的产品的高质量搜索结果?

node.js - NodeJS : Make it possible for user input when running child_process

javascript - 让构造函数返回 Promise 是不好的做法吗?

javascript - 创建 JavaScript 变量

mysql - 根据日期时间列重置 auto_increment