задержка router.get до getData Функция извлекает информацию из API - PullRequest
0 голосов
/ 02 сентября 2018

Я новичок в node.js и выражаю, так что я хотел бы знать, что я делаю неправильно. Я отправляю запрос от клиента с помощью $ .post и получаю его с помощью .post

однако страница "/ books", которая вызывается с помощью router.get, кажется, загружается до конца .post. после отладки кода я обнаружил, что .post конец

let incomingRequest;
let bookTitle = [];
let bookAuthors = [];
let bookSmallThumbnail = [];

router.post('/data/books', function (req, res) {
    incomingRequest = req.body.book;
    console.log(incomingRequest);
});

function getData(cb) {
    request({
            url: `https://www.googleapis.com/books/v1/volumes?q=${incomingRequest}`,
            json: true,
        },
        console.log('passed Request'),
        function (error, response, body) {
            if (response.statusCode === 200) {
                cb(body);
            }
            body.items.forEach(item => {
                    bookTitle = bookTitle.concat(item.volumeInfo.title);
                    bookAuthors = bookAuthors.concat(item.volumeInfo.authors);
                    if (item.volumeInfo.imageLinks !== undefined && item.volumeInfo.imageLinks !== null) {
                        bookSmallThumbnail = bookSmallThumbnail.concat(item.volumeInfo.imageLinks.smallThumbnai);
                    }
                })
        });

}

module.exports = {
    getData: getData
}

router.get('/books',function (req, res) {
    getData(function getData(books) {
        res.render(path.join(__dirname, '../Client/books'), {
            bookTitle: bookTitle,
            bookAuthors: bookAuthors,
            bookSmallThumbnail: bookSmallThumbnail
        });
    })
})

сначала, а затем .get выполнить. но каждый раз, когда я запрашиваю новую книгу, сначала загружается страница / книги, а результата нет, если я не обновляю страницу, а затем отображаются данные.

я использую ejs для отображения возвращаемых данных

вот фрагмент кода из моего кода:

...