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

如何在JavaScript中将Web5 DWN查询的对象记录转为数组?

问题:将DWN查询返回的单个对象合并为对象数组

调用Web5 DWN的records.query API查询记录时,当前返回结果是逐个输出的单个对象:

Object { title: "Title 1", desc: "description 1" }
Object { title: "Title 2", desc: "description 2" }
Object { title: "Title 3", desc: "description 3" }

需要将结果整理为对象数组,目标格式如下:

[
  { title: "Title 1", desc: "description 1" },
  { title: "Title 2", desc: "description 2" },
  { title: "Title 3", desc: "description 3" }
];

修改后的代码A

const { records } = await web5.dwn.records.query({
    message: {
      filter: {
        dataFormat: 'application/json'
      }
    },
  });

console.log("total Saved records", records.length);

// 初始化空数组存储结果
const recordsArray = [];

// 循环解析每条记录并添加到数组
for (let record of records) {
  const rec = await record.data.json();
  recordsArray.push(rec);
};

// 输出整理好的对象数组
console.log(recordsArray);

修改后的代码B

const response = await web5.dwn.records.query({
  message: {
    filter: {
      dataFormat: 'application/json'
    },
  },
});
console.log("total Saved records", response.records.length);

// 用map生成Promise数组,通过Promise.all等待所有异步解析完成
const recordsArray = await Promise.all(
  response.records.map(async record => {
    return await record.data.json();
  })
);

// 输出整理好的对象数组
console.log(recordsArray);

核心修改点

  • 新增空数组recordsArray用于收集所有解析后的对象
  • 代码A利用for...of天然支持异步等待的特性,逐条解析后将对象推入数组
  • 代码B替换原forEach(无法正确处理异步回调),改用map+Promise.all批量处理异步解析,一次性得到完整数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:46:09