【发布时间】:2021-07-14 01:59:25
【问题描述】:
我正在开展一个个人项目,该项目将允许用户根据他们对类型的偏好来查找新书。我使用的数据库是 MongoDB。但是,虽然我能够使用 Postman 在后端获取所有数据,但我无法将其正确显示在前端。目前,我只是试图将数据发送到前端并至少在 console.log'd 中,但它并没有那么远。
这是路由文件中的代码。
router.get('/books/:genre', bookBuilder.get_some_books)
这是路由文件指向并正在运行的后端代码:
exports.get_some_books = async function (req, res) {
let { genre } = req.params;
try {
let books = await Book.find({"genre": genre});
if (books) {
res.json(books)
} else {
res.status(404).send({error: 'Not Found'});
}
} catch (err) {
res.status(500).send({error: err.message});
}
}
这是我在前端不工作的代码。
async getEverything() {
try {
let pbBooks = await axios.get(`/books/`, {
method: 'GET',
headers: {'Content-Type': 'application/json'},
params: {
genre: 'PB'
}
})
if (pbBooks) {
console.log(pbBooks)
} else {
this.$router.push('/Error');
}
} catch (err) {
console.log(`Network error: ${err.message}`)
}
}
我的代码栈是 Vue.js、Express.js、Node.js 和 Axios。在前端,我尝试将 axios.get() 的内部代码设置为“/books/PB”,然后尝试 getEverything(genre) 和 /books/${genre},但似乎都不起作用。
我收到的错误是 404 Request Failed 错误,它来自 getEverything() 函数中的 catch 块。我不确定为什么当后端工作正常时前端无法获取数据。是不是我做错了什么?
【问题讨论】:
标签: javascript node.js vue.js axios