gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:16:18 25 4
gpt4 key购买 nike

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

//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 中返回异步值。要返回此值时间,您必须传递 callback function ,或 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 asynchronous

希望有帮助。

关于javascript - 如何从包含来自另一个应用程序的数据库查询的 Node.js 函数获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com