延迟router.get直到getData函数从API检索信息

时间:2018-09-02 12:13:33

标签: node.js express ejs

我是node.js的新手并表示,所以我想知道我做错了什么。 我使用$ .post从客户端发布查询,并使用.post

接收查询

但是,使用router.get调用的页面“ / books”似乎在.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显示返回数据

这是我代码中最清晰的部分:

0 个答案:

没有答案