【问题标题】:Database count is returning Undefined数据库计数返回未定义
【发布时间】:2021-11-22 21:53:45
【问题描述】:

我需要一个小代码的小帮助。该函数返回[object Promise],我想返回计数。 当我在函数中使用 console.log 时,它工作得很好并显示了适当的结果,但是当返回代码并在函数外使用 console.log 时,它会说[object Promise]

async function queryDB(num) 
{
    await wixData.query("numDB")
    .eq("nums", num)
    .find()
    .then( (results) => 
    {
        var  count = results.items.length
        console.log("count in function: " + count)
        return count
    })
    .catch( (err) => 
    {
        let errorMsg = err;
    } );
}

然后我调用它:

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

我得到以下输出:

count out function: [object Promise]
count in function: 3

TIA

【问题讨论】:

  • onReady(async function () { & var num1 = await queryDB("1")
  • @Keith 它返回 undefined 那样

标签: javascript return return-value velo


【解决方案1】:

这里有几个问题..

  1. 除了未定义的 Promise 之外,您的 queryDB 不会返回任何内容
  2. 您将 thenables 与 async / await 混合,做一个或另一个。
  3. 你的 catch 什么都不做,一般来说避免 catch,除非你捕获特定的东西,进一步处理错误,而不是在 util 函数中。

自从你使用 async/await..

async function queryDB(num) 
{
    const results = await wixData.query("numDB")
      .eq("nums", num)
      .find();
    var count = results.items.length
    console.log("count in function: " + count)
    return count;
}

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

为了完整起见,如果您没有使用 async / await。

function queryDB(num) 
{
    return wixData.query("numDB") //don'f forget to return
      .eq("nums", num)
      .find()
      .then(results => {
         var count = results.items.length
         console.log("count in function: " + count)
         return count;
      });
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多