尝试创建关卡排行榜时,Leaderboard.map 不是函数
Posted
技术标签:
【中文标题】尝试创建关卡排行榜时,Leaderboard.map 不是函数【英文标题】:Leaderboard.map is not a function when trying to create a levels leaderboard 【发布时间】:2021-05-18 02:04:47 【问题描述】:我正在尝试启动并运行 XP/级别的排行榜(数据存储在 mongoDB 中),并且每当我运行命令时都会不断收到此类型错误(leaderboard.map 不是函数)。
我可以使用 !rank 命令检查级别,但使用 !leaderboard 命令时遇到问题。
我的排行榜代码是:
if(command === "leaderboard" || command === "lb")
const rawLeaderboard = await Levels.fetchLeaderboard(message.guild.id, 5);
if (rawLeaderboard.length < 1) return reply("PandaBot says nobody's in leaderboard yet! ????");
const leaderboard = Levels.computeLeaderboard(client, rawLeaderboard);
const lb = leaderboard.map(e => `$e.position. $e.username#$e.discriminator\nLevel: $e.level\nXP: $e.xp.toLocaleString()`);
message.channel.send(`$lb.join("\n\n")`)
我能想到的只是将其更改为await leaderboard.map
,但我暂时无法访问计算机进行测试。
对此的任何帮助将不胜感激!
【问题讨论】:
我在该代码下方做了一个 console.log(leaderboard) 并返回Promise [ guildID: '764347249495900170', userID: '673743545974128640', xp: 399, level: 1, position: 1, username: 'pandachu', discriminator: '2095' ]
【参考方案1】:
Levels.computeLeaderboard(client, rawLeaderboard)
返回一个承诺,因此您需要使用.then()
或await
来获得结果:
const leaderboard = await Levels.computeLeaderboard(client, rawLeaderboard);
const lb = leaderboard.map(
(e) =>
`$e.position. $e.username#$e.discriminator\nLevel: $
e.level
\nXP: $e.xp.toLocaleString()`,
);
message.channel.send(lb.join('\n\n'));
【讨论】:
【参考方案2】:没关系。添加了 await Levels.computeLeaderboard 并且它工作了?
【讨论】:
以上是关于尝试创建关卡排行榜时,Leaderboard.map 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
Unreal Engine 4 蓝图完全学习教程—— 初步尝试