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

Wix Velo调用Promise返回ID时得到[object Promise]如何解决

问题根因

wixData.query().find() 是异步操作,执行时不会立即返回查询结果,所以getID()函数的返回值本质是Promise对象,直接同步打印就会输出[object Promise]。你之前使用await报错是因为await只能在被async关键字标记的函数内部使用,直接在全局同步代码中写await会触发语法错误,另外你原有代码中返回ID的语句被注释了,即使Promise执行完成也拿不到返回值。

修复步骤

1. 修正getID函数,确保返回正确结果

import wixData from 'wix-data';

export async function getID() {
    try {
        const results = await wixData.query("Picks") // 你的数据集
            .eq("player", "Gary") // 对应字段和匹配值
            .find();
        if (results.items.length > 0) {
            const firstItemId = results.items[0]._id; 
            console.log("Return ID: " + firstItemId) 
            $w("#text31").text = firstItemId;
            return firstItemId; // 放开返回逻辑,抛出ID值
        } else {
            console.log("No Items Found");
            return null;
        }
    } catch (err) {
        console.error("查询错误:", err);
        return null;
    }
}

2. 选择对应方式拿到ID值

方式1:使用.then链式处理(不需要修改外层函数标记)

// 所有依赖ID的逻辑必须写在then的回调内部
getID().then(id => {
    console.log("Return the ID outside of the function: " + id);
    // 后续使用ID的业务逻辑写在这里
})

方式2:在async函数内使用await(代码逻辑更清晰)

// 外层函数必须加async标记,以页面加载钩子为例
$w.onReady(async function () {
    const targetId = await getID();
    console.log("Return the ID outside of the function: " + targetId);
    // 后续使用ID的业务逻辑写在这里
})

注意事项

所有依赖该ID的业务逻辑必须放在异步回调(then内部)或者await语句之后执行,不能在同步代码中直接调用getID()拿返回值,此时异步查询还未执行完成,拿不到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:54:05