[英]Getting mysql result from javascript function in node.js
我試圖讓 MySQL 從函數中得到結果。 目前我正在嘗試將結果從函數設置為全局數組,但這不起作用。
我對 NodeJS 或 Javascript 不是很熟悉,但我認為這是一個范圍問題。
如何以正確的方式做到這一點? 我需要使用異步還是從函數返回結果?
這就是我目前所擁有的。
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'xxxx',
port : '3306',
user : 'xxxx',
password : 'xxxx',
database : 'xxxx'
});
var db_members =[];
get_members();
console.log(db_members); //outputs []
function get_members(){
connection.query("SELECT * FROM users", (err, result, fields)=>{
if (err) throw err;
result.forEach(function(row) {
db_members.push(row.username);
});
console.log(db_members); //this works
});
}
connection.query
是async
函數,因此您無法同步獲取結果。
需要讓get_members
返回Promise
作為返回值,以便在使用時異步獲取結果。
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'xxxx',
port : '3306',
user : 'xxxx',
password : 'xxxx',
database : 'xxxx'
});
function get_members() {
return new Promise((resolve, reject) => {
connection.query("SELECT * FROM users", (err, result, fields)=>{
if (err) return reject(err);
var db_members = [];
result.forEach(function(row) {
db_members.push(row.username);
});
return resolve(db_members);
});
});
}
get_members()
.then((members) => {
console.log(members); // This will work.
})
.catch((error) => {
console.error(error);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.