node.js - 为什么按名称查找我的角色返回未定义?
问题描述
Gang.findOne({leaderUserID: message.author.id, leaderUserName: message.member.user.tag, serverID: message.guild.id}, (err, gang) => {
if(err) console.log(err);
let embed = new Discord.MessageEmbed()
.setTitle("Gang")
.setColor("4000FF")
.setThumbnail(message.author.displayAvatarURL)
gangName = message.content.substring(message.content.indexOf(" ") + 1, message.content.length);
if(!gang){
const newGang = new Gang({
leaderUserID: message.author.id,
leaderUserName: message.member.user.tag,
serverID: message.guild.id,
gangName: gangName,
points: "1"
});
guild.roles.create({
data: {
name: gangName,
color: `GREY`
},
reason: `Gang created by ${message.member.user.tag} at ${message.timestamp}`
});
let role = message.guild.roles.cache.find(guild => guild.name === gangName);
console.log(`role = ${role}`);
member.roles.add(role);
newGang.save().catch(err => console.log(err));
embed.addField("Gang Creation", "-15 points", true);
embed.addField("Gang Name", gangName, true);
message.channel.send(embed);
return;
除了分配角色外,一切正常。我将帮派名称设置为命令的第二部分,我使用该名称创建角色,我将角色设置为,
let role = message.guild.roles.cache.find(guild => guild.name === gangName);
但是角色的 console.log 显示“未定义”。
它是如何未定义的?我刚刚创建了角色,然后搜索了它。
解决方案
guild.roles.create 是一个异步函数,因此您可以使用await
let role = await guild.roles.create({
data: {
name: gangName,
color: `GREY`
},
reason: `Gang created by ${message.member.user.tag} at ${message.timestamp}`
});
console.log(`role = ${role}`);
member.roles.add(role);
推荐阅读
- autoit - 使用 AutoIT 和 WinSCP 检查连接和传输是否成功
- android - 暂停或停止片段后不显示键盘
- c# - 如何在 Unity Skybox 内部播放 360 度视频中找到佩戴 VR 耳机的用户正在观看的坐标?
- c# - 如何使用 C# 验证 SSL 证书
- delphi - Delphi 和 High-DPI:在运行时创建的控件获得错误的位置
- c++ - 如何在 Xcode 中使用 boost::multiprecision::float128
- c# - 从另一个类而不是新创建的 C# WPF 更新 Window 的当前实例
- javascript - 函数不同步运行
- java - 我们如何解决 Android Studio 中的“无法解析符号”问题?
- php - PHP | 如何使用唯一标志对数组中的值进行排序?