You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向数组push异步数据库返回值时如何正确使用await?

问题原因

db.get()是异步API,调用后不会立即返回查询结果,而是返回一个Promise对象,你直接将该对象推入数组,输出时自然就显示为[object Promise]。

修复方案

你需要先收集所有用户的数据库查询Promise,再通过Promise.all等待所有异步查询执行完成,拿到全部实际存储值后再输出,修改后代码如下:

fetchMsg.reactions.cache.map(async (reaction) => {
  // 过滤非👍的反应
  if (reaction.emoji.name !== ":thumbsup:") return;
  // 获取所有点👍的用户
  const reactedUsers = await reaction.users.fetch();
  // 收集所有数据库查询的Promise实例
  const queryPromises = reactedUsers.map(user => db.get(user.id));
  // 等待所有查询完成,获取最终结果数组
  const usersThatReacted = await Promise.all(queryPromises);
  // 若需要过滤数据库中无匹配记录的空值,可取消注释下一行代码
  // const usersThatReacted = (await Promise.all(queryPromises)).filter(Boolean);
  message.channel.send(usersThatReacted);
});

内容的提问来源于stack exchange,提问作者Dimooon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:39:04