使用MongoDB/Mongoose实现排行榜数据按等级降序格式化输出
你可以直接在查询的回调函数中对返回的docs数组做遍历拼接即可,以下是两种常用实现方案:
方案1:使用数组map方法(更简洁)
User.find({}).select('twitch_username level -_id').sort({level: 'desc'}).exec((err, docs) => { // 先处理查询错误 if (err) { console.error('查询失败:', err) return } // 遍历生成格式化的排行榜数组 const rankList = docs.map((item, index) => `${index + 1}. Twitch: ${item.twitch_username} Level: ${item.level}`) // 如果需要输出为换行拼接的纯文本,直接调用join方法 const rankResult = rankList.join('\n') // 此处替换为你自己的业务逻辑,比如返回给前端、打印日志等 console.log(rankResult) });
方案2:使用for循环实现
User.find({}).select('twitch_username level -_id').sort({level: 'desc'}).exec((err, docs) => { if (err) { console.error('查询失败:', err) return } const rankList = [] for (let i = 0; i < docs.length; i++) { const userItem = docs[i] rankList.push(`${i + 1}. Twitch: ${userItem.twitch_username} Level: ${userItem.level}`) } const rankResult = rankList.join('\n') console.log(rankResult) });
遍历的时候利用数组下标加1即可生成从1开始的排名,rankList是格式化后的行数组,rankResult是拼接好换行的完整排行榜文本,可以直接按需使用。
内容的提问来源于stack exchange,提问作者kal
相关产品推荐
相关产品推荐

