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

Knex查询始终返回Pending Promise问题求助

解决Knex查询返回Promise { <pending> }的问题

async函数本身的返回值就是Promise,你看到Promise { <pending> }说明没有正确等待Promise完成——哪怕你用了await/then,大概率是调用写法有问题,下面给你正确的调用方式和踩坑提醒:

正确调用示例

方式1:在async函数内用await

// 把调用逻辑包在async函数里
const runQuery = async () => {
  try {
    const data = await queryTable();
    console.log(data); // 这里能拿到实际查询结果
  } catch (error) {
    console.error('查询失败:', error); // 别忘了捕获错误
  }
};

runQuery();

方式2:用.then().catch()链式处理

queryTable()
  .then(data => {
    console.log(data); // 获取实际数据
  })
  .catch(error => {
    console.error('查询失败:', error);
  });

常见踩坑点

  • 不要直接在全局作用域用await:CommonJS模块下不支持顶级await,必须把调用逻辑放在async函数里执行;如果是ESM模块,需要在package.json里设置"type": "module"才能用顶级await。
  • 必须处理错误:Knex查询失败会触发Promise reject,如果没加catch,错误会被静默忽略,看起来像没返回结果。
  • 检查Knex初始化:确认你的Knex实例连接参数正确,数据库服务正常运行,连接失败会导致Promise一直pending或者reject。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:51:01