从 'wix-users' 获取成员角色
Getting member roles from 'wix-users'
我一直在尝试制作一个页面,根据不同用户的成员角色显示不同的元素。目前,我有两个成员角色:默认 "Member" 和一个新角色 "Sponsors"。我已经使用 wix-users 模块获得了成员角色。
import wixUsers from 'wix-users';
$w.onReady(function () {
//TODO: write your page related code here...
var roleName;
let currentUser = wixUsers.currentUser;
currentUser.getRoles()
.then( (roles) => {
var firstRole = roles[0];
roleName = firstRole.name; // "Role Name"
console.log(roleName);
var roleDescription = firstRole.description; // "Role Description"
}).catch(
onFailure()
);
if(roleName === "Sponsors"){
$w('#text13').show();
}
});
我知道 getRoles() 的承诺正在根据我的调试进行解析,并且 console.log(roleName)
在我登录时正确地将 "Sponsors" 记录到控制台。但是, if(roleName === "Sponsors")
的if语句似乎不会运行,无论我做什么。我做错了什么?提前致谢!
看起来您 运行 遇到了 Promises 问题。 getRoles()
函数是一个异步函数。这意味着它不会立即 return 一个值。这也是为什么它有一个 .then()
。 .then()
中的代码只是 运行 在由 getRoles()
编辑的 Promise return 解析为一个值之后。
您可能想查看一些关于 JavaScript Promises 的资源。 Wix Code 还有一个 article 描述了如何使用专门为 Wix Code 定制的 Promises。
检查 roleName
是否为 "Sponsors"
的代码实际上在设置 roleName
值的代码之前 运行s。这就是为什么它不起作用。您需要将该代码拉入 .then()
.
currentUser.getRoles()
.then( (roles) => {
var firstRole = roles[0];
roleName = firstRole.name;
if(roleName === "Sponsors"){
$w('#text13').show();
} );
或者,您可以使用 async
/await
来处理异步代码。
请注意,此示例可能仍然无法正常工作,因为您只是检查了用户第一角色。如果用户有多个角色,我认为不能保证 "Sponsors"
将成为第一个角色。
我一直在尝试制作一个页面,根据不同用户的成员角色显示不同的元素。目前,我有两个成员角色:默认 "Member" 和一个新角色 "Sponsors"。我已经使用 wix-users 模块获得了成员角色。
import wixUsers from 'wix-users';
$w.onReady(function () {
//TODO: write your page related code here...
var roleName;
let currentUser = wixUsers.currentUser;
currentUser.getRoles()
.then( (roles) => {
var firstRole = roles[0];
roleName = firstRole.name; // "Role Name"
console.log(roleName);
var roleDescription = firstRole.description; // "Role Description"
}).catch(
onFailure()
);
if(roleName === "Sponsors"){
$w('#text13').show();
}
});
我知道 getRoles() 的承诺正在根据我的调试进行解析,并且 console.log(roleName)
在我登录时正确地将 "Sponsors" 记录到控制台。但是, if(roleName === "Sponsors")
的if语句似乎不会运行,无论我做什么。我做错了什么?提前致谢!
看起来您 运行 遇到了 Promises 问题。 getRoles()
函数是一个异步函数。这意味着它不会立即 return 一个值。这也是为什么它有一个 .then()
。 .then()
中的代码只是 运行 在由 getRoles()
编辑的 Promise return 解析为一个值之后。
您可能想查看一些关于 JavaScript Promises 的资源。 Wix Code 还有一个 article 描述了如何使用专门为 Wix Code 定制的 Promises。
检查 roleName
是否为 "Sponsors"
的代码实际上在设置 roleName
值的代码之前 运行s。这就是为什么它不起作用。您需要将该代码拉入 .then()
.
currentUser.getRoles()
.then( (roles) => {
var firstRole = roles[0];
roleName = firstRole.name;
if(roleName === "Sponsors"){
$w('#text13').show();
} );
或者,您可以使用 async
/await
来处理异步代码。
请注意,此示例可能仍然无法正常工作,因为您只是检查了用户第一角色。如果用户有多个角色,我认为不能保证 "Sponsors"
将成为第一个角色。