簡體   English   中英

從node.js中的javascript函數獲取mysql結果

[英]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.queryasync函數,因此您無法同步獲取結果。

需要讓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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM