【发布时间】:2022-01-07 20:25:04
【问题描述】:
我正在尝试从中创建一个复杂对象的数组:
https://demo.ckan.org/api/3/action/package_show?id=sample-dataset-1
我想使用这个对象数组来使用 map() 创建组件
- 我使用http://json2ts.com 来制作响应类型:
// ... other types like Tag
export type DatasetInfoResult = {
license_title: string
relationships_as_object: string[]
maintainer_email: string
tags: Tag[]
//... all the params
}
export type DatasetInfoResponse = {
help: string
success: boolean
result: DatasetInfoResult
}
我的代码:
- datasetIDs 是一个字符串数组。这包含数据集名称,例如 sample-dataset-1
- getDataset 获取API地址,就ok了
export async function getAllDatasets() {
const datasetsIDs = (await listDatasets())
let allDatasets: DatasetInfoResult[]
datasetsIDs.map( async id => {
allDatasets.push( await getDataset(id) )
})
return allDatasets
错误信息:TypeError: Cannot read properties of undefined (reading 'push')
尝试另一种方式:
export async function getAllDatasets() {
const datasetsIDs = (await listDatasets())
let allDatasets: DatasetInfoResult[]
for (let i = 0; i <= datasetsIDs.length; i++ ) {
const resp = ( await getDataset( datasetsIDs[i]) )
allDatasets = [...allDatasets, resp]
// allDatasets.push(resp)
}
return allDatasets
错误消息:allDatasets 不可迭代
我怎样才能做到这一点?获取大量数据并使用它的更好方法是什么?
【问题讨论】:
标签: arrays json typescript api next.js