【发布时间】:2019-04-07 05:47:51
【问题描述】:
我正在尝试通过连续使用HTTP requests 和Axios 来构建JSON 文件:
- 获取对象(项目)数组
- 在每个名为 attachments 的项目中创建一个数组属性
- 获取每个项目的任务
- 获取每个任务的附件
- 将每个项目的任务附件推送到项目的附件数组中
- 从修改后的项目数组中创建一个
JSON文件
代码:
let getProjects = function() {
try {
return axios.get('https://app.asana.com/api/1.0/projects/')
} catch (error) {
console.error(error)
}
}
let getTasks = function(project) {
try {
return axios.get('https://app.asana.com/api/1.0/projects/'+project+'/tasks')
} catch (error) {
console.error(error)
}
}
let getAttachments = function(task) {
try {
return axios.get('https://app.asana.com/api/1.0/tasks/'+task+'/attachments')
} catch (error) {
console.error(error)
}
}
async function getAsanaData() {
let projects = await getProjects()
return Promise.all(projects.data.data.map(async (project) => {
project.attachments = []
let tasks = await getTasks(project.gid)
return Promise.all(tasks.data.data.map(async (task) => {
let attachments = await getAttachments(task.gid)
project.attachments = !!attachments ? project.attachments.concat(attachments.data.data) : project.attachments
return project
}))
}))
}
getAsanaData()
.then((projects) => {
var asanaData = safeJsonStringify(projects);
fs.writeFile("thing.json", asanaData);
})
.catch(err=>console.log(err))
但我遇到了这个错误:
status: 429,
statusText: 'Too Many Requests
我还没有发现任何有用的信息来解决它。我能做什么?
【问题讨论】:
-
听起来,正如它所说,您发出了太多请求,也许 - 您使用当前代码连续发出多少个请求?
-
您需要限制您的请求 - 体式可能会限制您。推荐使用下划线或lodash。两者都有一个节流方法来减慢请求的速度。
-
@CertainPerformance 道歉;我还不知道如何获得反馈,例如尝试的请求数量。但了解数据后,可能有数千个。
-
projects.data.data数组有多大?
标签: javascript node.js http promise axios