簡體   English   中英

從 MySQL 查詢中獲取數據以在 nodejs 中使用

[英]Get data from MySQL query for use in nodejs

嘗試查詢我的數據庫,每次我這樣做時,它都會在最后運行所有查詢,而不是在 nodejs 中需要它們時運行。

var mysql = require('mysql');

var con = mysql.createConnection({
  host: database.host,
  user: database.user,
  password: database.password,
  database: database.database
});

我從 json 文件中提取的連接數據。

function getSymbol(id){
var s = "";
con.query("SELECT * FROM Symbol WHERE PlayerID = '" + id + "'", function (err, result, fields) {
    if (err) throw err;
    console.log(result);
    if (result.length < 1) {
        console.log(result);
        s = result[0].Symbol;
    }
    else {
        s = "!";
    }
});
console.log(s);
return s;

}

這一切都在程序結束時運行,想知道是否有修復或我是否應該切換到 python(此時認真考慮重寫所有內容)。

問題是你寫的東西在 NIO 下,它不會等待執行下一條語句,除非你要求它。 試試下面的代碼:

async function getSymbol(id){
   var s = "";
   try {
    let result = await con.query("SELECT * FROM Symbol WHERE PlayerID = '" + id + "'")
    if (result.length < 1) {
        console.log(result);
        s = result[0].Symbol;
    }
    else {
        s = "!";
    }
   }catch(error){
        console.log(error);
        throw new error;
   }
    console.log(s);
   return s;
 }

注意:我使用了 async/await。 你也可以使用承諾

如前所述,該方法不是同步的。 您的結果將在您通過的回調上。

con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("The Data: " + result);
});

更多信息: https : //www.w3schools.com/nodejs/nodejs_mysql.asp

此外,您需要先連接con.connect( <callback-here> )

處理此問題的最佳方法是避免異步/等待語法的回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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