Javascript 数据无法正确加载

Javascript data won't load correctly

我想向当前用户显示他存储在我的数据库中的信息。它工作正常。唯一的问题是等待数据加载。在我下面的代码中,我使用 await 关键字来等待我的数据加载。但是 onReady 函数将被触发两次,而且我的 json 对象不包含关键字,但它确实包含关键字。

import wixData from "wix-data";
import wixUsers from "wix-users";

async function getTeamData() {
  let user = wixUsers.currentUser;
  let user_id = user.id;

  let options = {
    suppressAuth: true,
    suppressHooks: true,
  };

  wixData
    .get("Members/PrivateMembersData", user_id, options)
    .then((results) => {
      let item = results;
      let email = item.loginEmail;
      let data;

      console.log("Compare email: ", email);
      wixData
        .query("Users")
        .eq("Owner", email)
        .find()
        .then((found) => {
          if (found.items.length > 0) {
            data = found.items;
            console.log(data);
            return data;
          } else {
            console.log("No matching data found!");
            return null;
          }
        });
    })
    .catch((error) => {
      let error_msg = error.message;
      let code = error.code;
      console.log(code, error_msg);
    });
  console.log("Function finished!");
}

function waitForLoading() {
  setTimeout(() => {
    $w("#preloader").hide("FadeOut");
  }, 1500);
}

$w.onReady(async function () {
  let data = null;
  do {
    data = await getTeamData();
  } while (data != null);

  console.log(data);
  let group_name = data[0]["groupName"];
  console.log(group_name);
  $w("#groupNameTxT").text = group_name;
  waitForLoading();
});

有没有人遇到过类似的问题,知道怎么解决的? 提前致谢!

每个与 then 链接的承诺都必须有一个 return 值,否则 return 将是 undefined

在您的情况下,您错过了您创建的所有承诺中的 return。在这两个调用中,您必须在 wixData 变量之前使用 return

This might help you understand how it works