【问题标题】:Receiving DiscordJS Promise Object Instead of Resolution For Fetch User Nickname接收 DiscordJS Promise 对象而不是获取用户昵称的解析
【发布时间】:2021-10-25 00:56:15
【问题描述】:

我正在尝试创建排名列表/排行榜,但是在尝试映射值时,会返回一个承诺对象而不是字符串。我知道使用 fetch 我需要使用 .then() 来处理 promise,但是我不知道如何将解析的 promise 传递给 map 函数中的 item,以便输出正确。

预期输出格式:

LeaderBoard:
<Username> - <# Of Points>
.
.
.
.
.
<Last Username> - <Last # Of Points>

代码:

const buildLeaderBoard = async () => {
  const list = await db.collection("Karma").find({}, {upsert: true}).sort({ karma: -1 }).toArray()
    mappedlist = list.map(async function(item){
    item = await client.users.fetch(`${item.member}`).then((value) =>{
    return `${value.nickname} - ${item.karma}`;
    });
    return item;
    }).join(`\n`);

Current Output:

【问题讨论】:

    标签: javascript discord discord.js bots chatbot


    【解决方案1】:

    Array.map() 本身不适用于异步函数。您可以改为使用 for 循环:

    const buildLeaderBoard = async () => {
      const list = await db.collection("Karma")
          .find({}, {upsert: true})
          .sort({ karma: -1 }).toArray(),
        mappedList = [];
      for (let i = 0; i < list.length; i++) {
        const item = list[i],
          value = await client.users.fetch(`${item.member}`)
            .then((value) => {
              return `${value.nickname} - ${item.karma}`;
            });
        mappedList.push(value);
      }
      return mappedList.join("\n");
    }
    

    你也可以使用Promise.all():

    const buildLeaderBoard = async () => {
      const list = await db.collection("Karma")
          .find({}, {upsert: true})
          .sort({ karma: -1 }).toArray(),
        mappedList = list.map(async (item) => {
          const data = await client.users.fetch(`${item.member}`)
            .then((value) => `${value.nickname} - ${item.karma}`)
          return data;
        });
    
      return (await Promise.all(mappedList)).join("\n");
    
    }
    

    【讨论】:

    • 非常感谢,帮了大忙 :)
    猜你喜欢
    • 2020-09-28
    • 2021-03-20
    • 2013-10-15
    • 2021-07-30
    • 2021-04-05
    • 2019-05-10
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多