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

如何在JS/TS中转换Promise<Document[]>类型数据?

在JS/TS中处理Promise<Document[]>的后续转换方法

你直接调用a.map()报错的核心原因是:a是Promise对象,不是实际的数组,Promise本身并没有map方法。要操作Promise内部包裹的数组,必须先等待Promise完成,拿到解析后的数组再执行转换。

方法1:使用.then()链式调用(类似Swift的Promise.map)

JS/TS里Promise的.then()方法和你熟悉的Swift/Vapor中Promise的map作用一致——它会接收Promise resolve后的数组,你可以在回调里完成转换逻辑,返回的结果会自动被包装成新的Promise:

// 先修正转换逻辑的语法错误,正确返回目标对象
const a2Promise = a.then(documents => {
  return documents.map(({ _id, name }) => ({ _id, name }));
});
// a2Promise的类型为Promise<{ _id: ObjectId; name: string }[]>

方法2:使用async/await语法(更直观)

如果在async函数内部,你可以先通过await解析Promise拿到实际数组,再直接执行数组操作:

async function processDocuments() {
  const documents = await a; // documents为Document[]类型
  const a2 = documents.map(({ _id, name }) => ({ _id, name }));
  // 后续直接使用转换后的a2数组
}

关于转换逻辑的语法修正

你原来的箭头函数写法存在语法错误:{i._id, { name: i.name }既不是有效的对象字面量,也没有正确返回值。正确写法是通过解构提取字段,并用括号包裹返回的对象(避免被JS识别为代码块)。

内容的提问来源于stack exchange,提问作者János

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:02:02