将异步 MySQL 操作转换为 Node.js 中的 Promise
Node.js 的异步特性给来自 Python 的开发人员带来了挑战。为了解决这个问题,此代码片段尝试将 MySQL 操作包装在返回值的异步函数内。然而,由于 Node.js 的异步特性,这种方法不起作用。
要解决此问题,需要重构操作以返回承诺。使用 Bluebird,可以通过以下方式实现:
<code class="javascript">function getLastRecord(name) { return new Promise((resolve, reject) => { // Establish a connection to MySQL const connection = getMySQL_connection(); // Construct and execute the MySQL query const query_str = `SELECT name, FROM records WHERE (name = ?) LIMIT 1`; const query_var = [name]; connection.query(query_str, query_var, (err, rows, fields) => { if (err) { return reject(err); } resolve(rows); }); }); }</code>
现在,您可以根据需要处理返回的行:
<code class="javascript">getLastRecord('name_record').then((rows) => { // Access the rows and perform operations if (rows.length > 20) { console.log("action"); } }).catch((err) => { // Handle any errors setImmediate(() => { throw err; }); });</code>
此方法确保操作异步执行,同时允许您使用 Promise 以同步方式处理返回值。
以上是如何在 Node.js 中将异步 MySQL 操作转换为 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!