You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js结合mysql包同步执行操作遇到困难的问题咨询

问题根本原因

  • 你使用的mysql包原生query方法为回调风格API,本身不会返回Promise对象,await仅能作用于Promise对象,无法等待回调执行完成
  • 代码中return results写在query的回调函数内部,该返回值仅属于回调函数,不会被外层getManufactuters函数接收。getManufactuters没有显式返回值,默认返回undefined

解决方案

方案1:手动封装回调为Promise

将getManufactuters改写成返回Promise的函数即可,修改后代码如下:

const getManufactuters = () => {
  return new Promise((resolve, reject) => {
    sql.query('SELECT * FROM Manufacturer', (error, results) => {
      if (error) {
        console.log(error)
        return reject(error)
      }
      resolve(results)
    })
  })
}

const createProducts = async () => {
  const manufacturers = await getManufactuters()
  console.log(manufacturers)
}

createProducts()

修改后await即可正常等待Promise执行完成,拿到正确的查询结果。

方案2:使用Promise版本的MySQL驱动

如果不想每次手动封装回调,可以切换为支持Promise风格的MySQL驱动,原生支持async/await语法,无需额外处理回调逻辑。


内容的提问来源于stack exchange,提问作者Tom Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:06:03