Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Nodejs从MySQL检索数据_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 使用Nodejs从MySQL检索数据

Javascript 使用Nodejs从MySQL检索数据,javascript,mysql,node.js,Javascript,Mysql,Node.js,我不熟悉javascript和nodeJS 我在尝试运行SQL查询以使用Nodejs检索数据时遇到一些问题 我创建了一个连接模块db.js,但无法从执行controller.js获得结果 如果要将resolveconnection交换到查询,我可以肯定地知道连接模块工作得很好,我可以从DB中检索数据 请帮我看看哪里出了问题 这里是db.js var mysql = require('mysql2'); var Client = require('ssh2').Client; var ssh =

我不熟悉javascript和nodeJS

我在尝试运行SQL查询以使用Nodejs检索数据时遇到一些问题

我创建了一个连接模块db.js,但无法从执行controller.js获得结果

如果要将resolveconnection交换到查询,我可以肯定地知道连接模块工作得很好,我可以从DB中检索数据

请帮我看看哪里出了问题

这里是db.js

var mysql = require('mysql2');
var Client = require('ssh2').Client;
var ssh = new Client();

var db = new Promise(function (resolve, reject) {
    ssh.on('ready', function () {
        ssh.forwardOut(
            '127.0.0.1',
            12345,
            '127.0.0.1',
            3306,
            function (err, stream) {
                if (err) throw err;
                let connection = mysql.createConnection({
                    host: '127.0.0.1',
                    user: 'username',
                    password: 'password',
                    database: 'test',
                    stream: stream
                });

                connection.connect(function (err) {
                    if (!err) {
                        resolve(connection)
                    } else {
                        reject(err);
                    }
                });
            });
    }).connect({
        host: 'hostname',
        port: 22,
        username: 'username',
        password: 'password'
    });
});

module.exports = db;
这是controller.js

var database = require('./db');

module.exports.getcats = (function(req, res) {
    database().then(function (connection) {
        connection.query("SELECT * FROM listUnit", function (error, results, fields) {
            if (error) {
                console.log(error);
                return;
            }
            res.write(results);
        });
    });
});

如果您的代码与上面描述的一样,则在运行时不会出现任何可见的情况

node controller.js
这是因为控制器模块定义了一个导出函数,该函数打开数据库连接并进行查询,但它从未调用该函数

可能在实际应用程序中,您会在其他模块中使用导出的getcats函数,就像您使用了db函数一样。但是,如果您愿意,可以修改控制器,以便代码定义、导出和调用函数,并在从命令行运行查询时提供查询结果:

var database = require('./db');

// define the function
function getcats(req, res) {
    database().then(function (connection) {
        connection.query("SELECT * FROM listUnit", function (error, results, fields) {
            if (error) {
                console.log(error);
                return;
            }
            res.write(results);
        });
    });
}

// export the function for use in other places
module.exports = getcats;

// invoke so it runs the query when you call "node controller.js"
getcats();

日志在说什么?结果的日志输出是什么?嗨,西蒙。运行命令node controller.js后,没有出现任何问题。但是,如果将查询放入db.js并运行它,查询结果将显示在控制台上。