gpt4 book ai didi

javascript - Node.js MySQL 查询无法将 MySQL 结果分配给变量

转载 作者:行者123 更新时间:2023-11-30 23:43:24 28 4
gpt4 key购买 nike

我试图将 MySQL 查询结果分配给一个变量,然后在脚本中多次使用它。我想这样做是因为我有 PHP 背景并且我喜欢以这种方式工作。我知道 Node.js 异步工作,所以这是我的问题。

在下面的代码中,我想将 MySQL 结果分配给 sql_results 变量,但是 connection.query 函数异步工作并且代码以不同的顺序工作。在这种情况下,在我的代码末尾,当我 console.log(sql_results) 时,它返回给我 undefined。这是正常的,因为当我检查控制台输出时,我清楚地看到 console.log(sql_results)console.log(results) 之前工作。

var mysql = require('mysql');

var connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "1234",
database: "db_progress"
});

var sql_query = "SELECT * FROM db_progress.tblresults res WHERE res.id < 3";
var sql_results; // This is my variable

connection.connect();

connection.query(sql_query, function (error, results, fields) {
if (error) throw error;
console.log(results); // This is mysql results
sql_results = results; // I am sure this works but I can't see
});

connection.end();

console.log(sql_results); // This returns undefined because works before query

如何将 MySQL 结果分配给一个变量,或者是否有不同的方法用于此目的。请详细说明。

谢谢。

最佳答案

Node js 函数异步工作,所以我建议使用带有 promise 的查询。

class Database {
constructor( config ) {
this.connection = mysql.createConnection( config );
}
query( sql, args ) {
return new Promise( ( resolve, reject ) => {
this.connection.query( sql, args, ( err, rows ) => {
if ( err )
return reject( err );
resolve( rows );
} );
} );
}
close() {
return new Promise( ( resolve, reject ) => {
this.connection.end( err => {
if ( err )
return reject( err );
resolve();
} );
} );
}
}

关于javascript - Node.js MySQL 查询无法将 MySQL 结果分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57592863/

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