簡體   English   中英

如何使用 NodeJS 中的 mysql 庫將查詢結果保存在變量中?

[英]How can I save the query result in a variable using the mysql library in NodeJS?

我有這段代碼,它打印出正確的結果。 我只想在變量中使用“example@gmail.com”:

[ RowDataPacket { CORREO: 'example@gmail.com' } ]
conexion.query("SELECT CORREO FROM ALUMNOS WHERE NOMBRE='RUBEN'", function (error, results, fields) {
    if (error) {
        throw error;
    }else{
        console.log(results)
    }
})

但是當我想把它保存在一個變量中時,它給我一個錯誤或未定義:

async function obtainEmail() {
    let result = await conexion.query("SELECT CORREO FROM ALUMNOS WHERE NOMBRE='RUBEN'", function (error, results, fields) {
        if (error) {
            throw error;
        }else{
            return results;
        }
    })
}

obtainEmail().then(data => console.log(data));

結果:

undefined

我也測試過:

let test = await obtainEmail();
console.log(test);

結果:

SyntaxError: await is only valid in async functions and the top level bodies of modules

嘗試將查詢結果(“example@gmail.com”)保存在變量中

如果將查詢 function 包裝到 Promise 中,您將能夠使用async / await

const results = await new Promise((resolve, reject) => {
  conexion.query("SELECT CORREO FROM ALUMNOS WHERE NOMBRE='RUBEN'", function (error, results, fields) {
      if (error) {
        return reject(error);
      }
      resolve(results)
  })
})

為了擺脫await is only valid in async functions錯誤,調用它的 function 必須有一個async ,例如

(async () => {
  const results = await new Promise((resolve, reject) => {
    conexion.query(
      "SELECT CORREO FROM ALUMNOS WHERE NOMBRE='RUBEN'",
      function (error, results, fields) {
        if (error) {
          return reject(error);
        }
        resolve(results);
      }
    );
  });
})();

暫無
暫無

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

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