Node.js 在使用变量之前尝试使用 async/await 从 mysql select 中获取数据

卫士2010

我需要通过 mysql 查询捕获一些数据,并使用结果来构建和发送带有节点的结果的电子邮件。我将代码放在一个函数中,但对查询的调用似乎仍然是异步的,因为在函数结束之前永远不会返回结果,并且返回的变量始终为空。

尝试了不同的 async/await 方法,但执行似乎仍然是异步的 在我下面的代码中,只是在控制台日志中进入第 3 步,无论我在函数调用结束时尝试做什么,第 4 步都是 mde

async function querydb (utente){
  console.log("sono in querydb");
  var messageHTMLAllegati="";
  var risultatoquery;
  console.log("step 1");
         var connection = mysql.createConnection({
    host     : process.env.IP_address,
    user     : process.env.nome_utente,
    password : process.env.password,
    port     : process.env.port,
    database : process.env.DB,
  });
  console.log("step 2");
  const query = util.promisify(connection.query).bind(connection);

(async () => {
  try {
    console.log("step 3");
    var result = await query('SELECT Link FROM Link_Foto where ID_Utente="' + utente + '"');
    var i = result.length;
    console.log("step 4");
  var j ;
  for (j=0; j < i; j++) {
        messageHTMLAllegati +='<a href="' + result[j].Link + '">Immagine ' + (j+1)+ '</a><BR>';
console.log("print the link found in the DB and added to the text to be printed"+result[j].Link);
        }
  } finally {
    connection.end();
  }
})()
  return messageHTMLAllegati;
}

我确实希望最终变量“messageHTMLAllegati”包含一些文本以及所需的查询字段,但它始终为空。在日志中,我看到变量已填满,但仅在此之后返回函数,因此用于将电子邮件放在一起的文本从 DB 部分是空的

沙欣·舍姆西安

async/await 方法仅在 await 函数是一个承诺时才有效。mysql 中的“查询”等函数使用回调函数来获取结果。因此,如果您想将它与 async/await 方法一起使用,您应该在另一个函数中使用它并在其回调函数中将结果作为这样的承诺:

function query_promise(q_string){
    return new Promise((resolve, reject)=>{
        query(q_string,(err, result)=>{
        if(err) return reject(err);
        resolve(result);
    });
 });
}

然后在你的代码中:

var result = await query_promise('SELECT Link FROM Link_Foto where ID_Utente="' + utente + '"');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用node.js从mysql数据库中获取图像

无法使用Node.js从MySQL表正确检索数据

在Node和MySQL的select查询中使用变量

使用MySQL在Node.js中嵌套查询

在node.js中获取MySQL数据(快速)并使用EJS打印

如何使用Node.js更新MySQL中的多列

使用Node.js在HTML中打印Mysql数据

使用Node JS将数据从Excel导入MySql

使用Node.JS以JSON格式从MySQL检索数据

Node.js puppeteer mysql-使用mysql将获取的值插入到循环内的数据库中

使用Node.js在Mysql查询中传递数组

使用Node.JS将JSON对象数据插入MySQL

使用SQL SELECT Node.js

如何将MySQL数据库的结果放在Node.js中的变量中?

使用node,mysql,express和pure js从数据库中删除一行

使用node.js在MySQL中插入大容量数据时出错(错误代码:'ECONNRESET')

使用node.js中的where子句选择查询-MySQL?

如何使用回调通过node.js和ejs从mysql获取数据?

在Node.js中以不同方式使用mysql数据输出

如何使用Node JS从MySQL数据库获取值

如何从Node js中的“ then”中获取数据?

使用TypeScript在WebdriverIO中的“之前”钩子中声明Node.js全局变量

如何使用Node JS和Express在MySQL数据库中存储PDF

无法使用Node.js从Mongodb中获取数据

如何使用MySQL数据库在Node.js中创建登录API

使用 Node.js 从 MySQL 获取数据并在索引页面上显示

如何在node.js中从mysql获取数据

在 Flutter 中从 Node.js rest api 获取数据时出错(Mysql Localhost)

使用 node.js 将 JSON 对象插入到 mySQL 数据库中