(wixUsers && wixUsers.currentUser && wixUsers.currentUser.id) 在 Wix 代码中是什么意思?

What does (wixUsers && wixUsers.currentUser && wixUsers.currentUser.id) mean in Wix code?

我正在尝试构建自定义登录并遇到这段可能有用的代码,但我不确定我是否完全理解它。我将尝试解释它,希望有人会告诉我我是否在正确的轨道上,或者他们会纠正我。我对编程(绝对是 api)还是比较陌生,所以请记住这一点。

首先,我将对其进行分解。 所以 wixUsers 导入有关不同类型用户的信息。从文档中,我看到有三种类型的用户:访问者(未登录的用户)、会员(已登录的用户)和管理员。

currentUser 获取包含有关当前查看站点的用户的信息的对象。

id 获取用户的唯一标识。

所以我对if语句的解释是,如果有一个用户,并且当前用户有一个id。

然后如果为真,它会获取当前用户的 ID 并将其存储在键 _id 的 contactInfo 对象中。据我了解,当您在登录时使用 wixUsers.currentUser.id 时,它是一个随机 ID,它不是与注册时创建的数据库集合中的 contactInfo 相关联的 ID???提前致谢!

if (wixUsers && wixUsers.currentUser && wixUsers.currentUser.id) {
                userData.contactInfo._id = wixUsers.currentUser.id;
                await wixData.insert("MemberProfileDatabase", userData.contactInfo);
                wixLocation.to('/account/my-account/')
            }

你已经差不多明白了 - if 语句是用来查看

  • wixUsers存在,此时假定为对象,然后检查:
  • wixUsers.currentUser存在,此时假定为对象,然后检查 (* wixUsers.currentUser.id 存在

你不能 只是 单独检查 wixUsers.currentUser.id 因为如果 wixUsers 是未定义的,或者如果 currentUser 是未定义的 (或 null),将抛出错误。

也就是说,在较新的环境中(或者如果代码被转译),使用可选链接可以使语法更简单:

if (wixUsers?.currentUser?.id) {

相当于原来的if检查。

如果找到 id,则将其分配给 contactInfo 并保存到数据库。

虽然,我更愿意提取 ID 开始,而不是重复 wixUsers.currentUser.id:

const id = wixUsers?.currentUser.id;
if (id) {
  userData.contactInfo._id = id;
  // etc