【问题标题】:Leaderboard from database using MongoDB/Mongoose使用 MongoDB/Mongoose 的数据库排行榜
【发布时间】:2021-10-06 11:10:30
【问题描述】:

在每个文档中都有一个带有数字值的级别字段和一个带有字符串值的 twitch_username。我想像这样返回这些值:

1. Twitch: <twitch_username> Level: <level>
2. Twitch: <twitch_username> Level: <level>
3. Twitch: <twitch_username> Level: <level>
//...

我尝试过映射数据、运行 for 循环、将数据推送到新数组等,但我似乎无法理解它。

当前正在运行此查询,它按降序返回我需要的特定数据:

  User.find({}).select('twitch_username level -_id').sort({level: 'desc'}).exec((err,docs) => { 
      // console.log(docs);
  });

上面的查询返回:

[
  { twitch_username: 'user1', level: 67 },
  { twitch_username: 'user2', level: 14 }
]

这是我想要的,但我不能单独标记每个值,返回数据但我无能为力。

【问题讨论】:

  • 那么你想要的输出是什么?
  • 第一个代码块
  • 是否需要像“1. Twitch: Level... 一样将其作为一个完整的字符串返回?
  • 我认为将它作为一个完整的字符串返回是最有意义的,因为每个用户都有自己的排行榜行
  • 在下面查看我的答案。我将它们简化为单个字符串

标签: javascript mongodb mongoose leaderboard


【解决方案1】:

你可以使用数组 reduce 将其缩减为一个字符串

const output = [
  { twitch_username: 'user1', level: 67 },
  { twitch_username: 'user2', level: 14 }
];

然后使用reduce函数

output.reduce((final, current, id) => {
    return (final + (id+1) + '. Twitch: ' + current.twitch_username + ' Level: ' + current.level + '\n');
}, '')

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 2021-03-20
    • 2016-09-13
    • 2020-10-21
    • 2020-12-08
    • 2021-05-29
    • 2020-08-19
    • 2020-12-25
    • 2020-10-30
    相关资源
    最近更新 更多