![](/img/trans.png)
[英]How can I get the result of a query method with mysql in nodejs?
[英]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.