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

async函数queryDB返回[object Promise]无法获取数据库查询计数问题求助

问题根因

  • 所有async关键字修饰的函数默认返回值都是Promise对象,你的原有代码存在两个问题:一是queryDB函数没有显式返回异步查询的计数结果,二是调用queryDB的时候没有等待异步操作执行完成,直接打印了返回的Promise实例本身。
  • 你遇到的输出顺序也验证了异步逻辑的执行特性:外部的同步打印逻辑早于异步数据库查询回调执行,所以先输出[object Promise],后输出函数内部的正确计数值。

修复方案

第一步:修改queryDB函数,统一异步写法并显式返回结果

async function queryDB(num) {
  try {
    const results = await wixData.query("numDB")
      .eq("nums", num)
      .find()
    const count = results.items.length
    console.log("count in function: " + count)
    return count
  } catch (err) {
    console.error("查询出错:", err)
    // 可根据业务需求调整出错时的返回值,也可以直接抛出错误
    return 0
  }
}

第二步:修改调用逻辑,等待异步操作完成后再取值

可以选择await写法,代码更直观:

$w.onReady(async function () {
  var num1 = await queryDB("1");
  console.log("count out function: " + num1)    
});

也可以选择.then回调写法:

$w.onReady(function () {
  queryDB("1").then(num1 => {
    console.log("count out function: " + num1)
  })
});

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

相关产品推荐
方舟 Agent Plan

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

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