Я пытаюсь создать файл JSON
, сделав последовательно HTTP requests
с Axios
. Это то, чего я достиг до сих пор:
- Получить массив объектов (проектов)
- Создать свойство массива в каждом проекте с именем tasks
- Получить задачи каждого проекта
- Вставить задачи каждого проекта в его свойство задач (т.е. заполнить этот массив в каждом объекте проекта)
- Возвращает измененный массив проектов
Код:
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').then(response => { return response } )
return axios.get('https://app.asana.com/api/1.0/tasks/'+task+'/attachments?opt_fields=download_url,view_url,permanent_url')
} catch (error) {
console.error(error)
}
}
function getAsanaData() {
return getProjects()
.then((result) => {
const projects = result.data.data;
const taskPromises = projects.map((project) => {
return getTasks(project.gid)
.then((task) => {
project.tasks = task.data.data;
});
});
return Promise.all(taskPromises)
.then(() => projects);
});
}
Promise.try(() => {
return getAsanaData();
}).then((result) => {
console.log(util.inspect(result, {showHidden: false, depth: null}))
//var asanaData = safeJsonStringify(result);
//fs.writeFile("thing.json", asanaData);
})
.catch(err=>console.log(err))
Дальнейшее требование:
Аналогично созданию свойства массива в каждом проекте и заполнению его объектами задач проекта, мне нужно либо:
- Создайте свойство массива в каждой задаче и заполните его вложениями задачи, а затем верните массив проектов, измененный таким образом
- Вместо того, чтобы сначала давать проектам свои задачи, а затем отдавать им вложения, только давать проектам вложения их задач, а затем возвращать массив проектов, измененный таким образом.
Конечным результатом последнего подхода является цель, во всяком случае. Мне нужно, чтобы у каждого проекта были вложения всех его задач. Задачи являются лишь средством для достижения этой цели.
Я много раз переписывал код, пытаясь добиться такого результата. Как это можно сделать?