[英]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.