繁体   English   中英

如何从包含来自另一个应用程序的数据库查询的 Node.js 函数获取返回值

[英]How to get the return value from Node.js function which contains DB query from another application

我正在学习 Node.js,我刚刚开始使用一些 MySQL 连接。 我有一个函数应该从数据库中获取一组行。 但是我无法从中获得价值。

//connect.js
var mysql = require('mysql');
module.exports = {
    world : function () {
        var conn = mysql.createConnection({
            host : '',
            user : 'root',
            password : '',
            database : ''
        });
        conn.connect(function(err){
            if(err) throw err;
        });
        conn.query('SELECT * FROM `room` WHERE 1', function(err, result, fields){
            if(err) throw err;
            var id = JSON.stringify(result[0].id);
            var name = JSON.stringify(result[0].name);
            var time = JSON.stringify(result[0].time);
            return time;
        });
        conn.end(function(err){
            if(err) throw err;
        })
      }
};

我尝试通过这个程序获得价值:

//show.js
var hello = require('./connect');
console.log(hello.world());

结果是这样的:

$ node show
undefined

那么我应该如何获得价值?

您不能只在 connect.js 中返回异步值。 要返回此值time ,您必须传递回调函数promise

这是回调的一个例子:

//connect.js
var mysql = require('mysql');
module.exports = {
    world : function (callback) { // Now world method takes a callback function parameter
        var conn = mysql.createConnection({
            host : '',
            user : 'root',
            password : '',
            database : ''
        });
        conn.connect(function(err){
            if(err) callback(err, null);  // Callback an error
        });
        conn.query('SELECT * FROM `room` WHERE 1', function(err, result, fields){
            if(err) callback(err, null);  // Callback an error
            else {
                var id = JSON.stringify(result[0].id);
                var name = JSON.stringify(result[0].name);
                var time = JSON.stringify(result[0].time);
                callback(null, time); // callback your response here
            }
        });
        conn.end(function(err){
            if(err) callback(err, null); // Callback an error
        })
    }
};

这就是你如何得到回应

//show.js
var hello = require('./connect');
hello.world(function(err, response) {
    if (err) throw err;
    console.log(response);
});

我建议你学习更多关于Javascript 异步

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM