gpt4 book ai didi

javascript - Nodejs MySQL连接查询返回值给函数调用

转载 作者:搜寻专家 更新时间:2023-11-01 00:46:08 24 4
gpt4 key购买 nike

我正在尝试从数据库中获取值(value)。使用演示示例进行试用。但是我在同步调用时遇到问题,尝试使用回调函数。我是 node.js 的初学者,所以不知道这是否正确。

文件 1:app.js

var data;

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

var query = 'SELECT 1 + 1 AS solution';

var r = db.demo(query, function(result) { data = result; });

console.log( 'Data : ' + data);

文件 2:db.js

var mysql      = require('./node_modules/mysql');

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

module.exports.demo = function(queryString, callback) {
try {
connection.connect();
console.log('Step 1');

connection.query(queryString, function(err, rows, fields) {
console.log('Step 2');
if (err) {
console.log("ERROR : " + err);
}
console.log('The solution is: ', rows[0].solution);

callback(rows[0].solution);

return rows[0].solution;
});
callback();

connection.end();
console.log('Step 3');
}
catch(ex) {
console.log("EXCEPTION : " + ex);
}
};

输出:

Step 1
Step 3
Data : undefined
Step 2
The solution is: 2

也提到了这个问题,但没有解决我的问题: nodeJS return value from callback

最佳答案

问题是这样的:

var r = db.demo(query, function(result) { data = result; });

console.log( 'Data : ' + data);

console.log 将在调用回调函数之前运行,因为 db.demo 是异步的,这意味着它可能需要一些时间才能完成,但所有而下一行代码 console.log 将被执行。

如果要访问结果,需要等待回调函数被调用:

var r = db.demo(query, function(result) { 
console.log( 'Data : ' + result);
});

这就是大多数处理 I/O 的代码在 Node 中的运行方式,因此了解它很重要。

关于javascript - Nodejs MySQL连接查询返回值给函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635791/

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