函数计算中,在 note.js 中访问 mysql, callback回调是异步,如何解决?[阿里云]

函数计算中,在 note.js 中访问 mysql。 queryResult 里面 获取不到 访问数据库是否成功了。而 callback回调又是个异步。 函数执行完了,这货才回来。我该咋解决这种问题呀?

以下为热心网友提供的参考意见

在函数计算中,如果您需要在 Node.js 中使用 MySQL,可以使用 mysql 模块。但是,由于回调函数是异步的,您需要使用 Promise 或者 async/await 来处理异步操作。

以下是一个使用 Promise 的示例:

const mysql = require('mysql');

function queryDatabase(sql, args) {
  return new Promise((resolve, reject) => {
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'your_username',
      password: 'your_password',
      database: 'your_database'
    });

    connection.connect();

    connection.query(sql, args, (error, results) => {
      if (error) {
        reject(error);
      } else {
        resolve(results);
      }
      connection.end();
    });
  });
}

// 使用示例
queryDatabase('SELECT * FROM users WHERE id = ?', [1])
  .then(results => {
    console.log(results);
  })
  .catch(error => {
    console.error(error);
  });

以下是一个使用 async/await 的示例:

const mysql = require('mysql');

async function queryDatabase(sql, args) {
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'your_username',
    password: 'your_password',
    database: 'your_database'
  });

  await connection.connect();

  const [results] = await connection.promise().query(sql, args);

  connection.end();

  return results;
}

// 使用示例
(async () => {
  try {
    const results = await queryDatabase('SELECT * FROM users WHERE id = ?', [1]);
    console.log(results);
  } catch (error) {
    console.error(error);
  }
})();

请注意,您需要根据实际情况替换数据库连接信息(如主机名、用户名、密码和数据库名)。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====