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
我想向当前用户显示他存储在我的数据库中的信息。它工作正常。唯一的问题是等待数据加载。在我下面的代码中,我使用 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