我正在尝试构建一个自定义登录,并发现了这段可能会有所帮助的代码,但我不确定我是否完全理解它。我将尝试解释它,希望有人会告诉我我是否走上了正确的道路,或者他们会纠正我。我对编程(当然还有api(还比较陌生,所以请记住这一点。
首先,我会把它分解。因此wixUsers会导入关于不同类型用户的信息。从文档中,我看到有三种类型的用户:访问者(未登录的用户(、成员(已登录的用户"(和管理员。
currentUser获取包含当前正在查看网站的用户信息的对象。
id获取用户的唯一id。
所以我对if语句的解释是,如果有一个用户,并且当前用户有一个id。
然后,如果这是真的,它会获取当前用户的id,并将其存储在key_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) {
这相当于原始的CCD_ 8校验。
如果找到了id
,则将其分配给contactInfo
并保存到数据库中。
不过,我更愿意从提取ID开始,而不是重复wixUsers.currentUser.id
:
const id = wixUsers?.currentUser.id;
if (id) {
userData.contactInfo._id = id;
// etc