我有这段代码,它打印了正确的结果。我只想"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")保存在变量
如果您将查询函数包装到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
错误,调用该函数的函数必须具有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);
}
);
});
})();