javascript - 从新创建的帐户中检索 8 位代码的鸡和蛋情况
问题描述
我正在重构一个在谷歌脚本 G-Suite API 上创建新用户帐户的脚本。
该脚本运行良好,并准备了带有登录凭据的电子邮件模板——一切都符合预期。
我没有尝试检索 8 位验证码,并将其附加到电子邮件模板,因为我们已移至所需的 2FA 组织范围。
问题的关键是,如果没有创建帐户,我自然无法获取代码。似乎有一些问题 - 某种类型的延迟,我无法足够快地获取代码?不完全确定。我得到了一些关于如何使用这个简单的变量声明来检索代码的帮助:
AdminDirectory.VerificationCodes.list('donald.duck@example.com').items[0].verificationCode;
可以想象,问题是 donald.duck 还不是用户 =)
我即将放弃,只是创建另一个脚本,发送一封带有 8 位代码的后续电子邮件。
有谁熟悉这个API,这个问题?
我尝试使用上述声明设置所有类型的变量,并将其放置在当前脚本中的所有位置 - 即使在创建用户之后:
user = AdminDirectory.Users.insert(result.user);
但是,它总是返回“错误消息:无法读取未定义的属性'0'”错误。我认为这是因为用户还不存在。
提前致谢。
解决方案
你得到那个错误是因为items
数组是空的。在获取假定存在的值之前,首先检查该元素是否存在。
// Mock AdminDirectory
const AdminDirectory = {
VerificationCodes: {
list: (userId) => {
const codes = [{
userId: 'user@example.com',
verificationCode: 'code1',
}, {
userId: 'user@example.com',
verificationCode: 'code2',
}];
return { items: codes.filter(c => c.userId === userId) };
},
}
};
const response = AdminDirectory.VerificationCodes.list('user1@example.com');
// Check if the `items` array has anything before accessing the value
const code = response.items.length > 0 ? response.items[0].verificationCode : null;
console.log(code); // null
推荐阅读
- node.js - 使用 expo init Project_name 创建项目时未定义的开始
- wordpress - 在 Wordpress 中更改 csv 导出中的分隔符(Caldera Forms)
- c++ - C++通过BasePairMap映射char输入变量得到输出整数变量
- r - 在R中将具有计数的宽数据帧转换为长格式
- node.js - CORS 在 Node.js AWS EC2 中没有成功
- node.js - 如何在 NodeJS 中处理 C# ByteArrayContent
- javascript - 防止在sweetalert后重新加载网站
- algorithm - 从一组字符串对 C++ 形成一个圆/链
- mysql - 如何为原始表和左连接创建条件?
- node.js - Node/Express/Request 中的内存泄漏