我是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显示返回数据
这是我代码中最清晰的部分: