У меня есть некоторые фиктивные данные для менее чем 2 URL:
1. Get the list of users from 'https://myapp.com/authors'.
2. Get the list of Books from 'https://myapp.com/books'.
Теперь моя задача - отсортировать Книги по имени и записать отсортированный список в файл mysortedbooks.json
как JSON
Затем мне нужно создать массив авторов со свойством books, в котором есть все книги этого автора.
Если у автора нет книг, этот массив должен быть пустым.В этом случае сортировка не требуется, и данные должны храниться в файле authorBooks.json
в формате JSON.
Теперь я должен вернуть обещание, которое разрешается после выполнения вышеуказанных шагов.Например, я должен вернуть последний вызов saveToFile
в приведенном ниже коде.
const fs = require('fs');
function getFromURL(url) {
switch (url) {
case 'https://myapp.com/authors':
return Promise.resolve([
{ name: "Chinua Achebe", id: "1" },
{ name: "Hans Christian Andersen", id: "2" },
{ name: "Dante Alighieri", id: "3" },
]);
case 'https://myapp.com/books':
return Promise.resolve([
{ name: "Things Fall Apart", authorId: "1" },
{ name: "The Epic Of Gilgamesh", authorId: "1" },
{ name: "Fairy tales", authorId: "2" },
{ name: "The Divine Comedy", authorId: "2" },
{ name: "One Thousand and One Nights", authorId: "1" },
{ name: "Pride and Prejudice", authorId: "2" },
]);
}
}
const outFile = fs.createWriteStream('...out-put-path...');
function saveToFile(fileName, data) {
outFile.write(`${fileName}: ${data}\n`);
return Promise.resolve();
}
function processData() {
const authors = getFromURL('https://myapp.com/authors').then(author => {
return authors;
});
const books = getFromURL('https://myapp.com/authors').then(books => {
return books.sort();
});
return saveToFile('mysortedbooks.json', JSON.stringify(books)).then(() => {
const authorAndBooks = authors.map(author => {
var jsonData = {};
jsonData['name'] = author.name;
jsonData['books'] = [];
for(var i=0; i<books.length; i++) {
if(authod.id == books[i].authorId) {
jsonData['books'].push(books[i].name);
}
}
});
saveToFile('authorBooks.json', authorAndBooks);
});
}
processData().then(() => outFile.end());
Основная логика, которую я должен реализовать, заключается в методе processData
.
Я попытался добавить код для решения требования, но застрял, как вернуть promise
после всех операций.Также, как создать мой authorAndBooks
контент JSON.
Пожалуйста, помогите мне с этим.