路由器:
router.route('/allmovies/:searchtext').get(moviesCtrl.getMovieBySearchText);
控制器:
const getMovieBySearchText = async (req, res) => {
const searchText = req.params.searchtext;
const searchedMovies = await Movies.find({ $text: { $search: searchText } }).limit(10).sort({ score: { $meta: "textScore" } });
if (!searchedMovies) return res.status(204).json({'message': 'No movie found.'});
res.json(searchedMovies);
}
當我從前端進行搜索時,它會將引數放在后端抓取的 URL 中。如果搜索為空白,則會導致后端服務器崩潰。我可以通過為'/allmovies/'. 我只是想更好地理解為什么會發生這種情況,或者是否有更好的方法來處理這個問題。我查看了 express 驗證器,但這僅對發布資料有意義,而不是獲取。是的,可以驗證前端,但是有一些方法可以解決這個問題,并且服務器將不安全。
uj5u.com熱心網友回復:
你不能在不傳遞引數的情況下呼叫端點,我認為崩潰是因為如果你不傳遞searchtext. 我建議使用 aquery代替:
/allmovies?searchtext=anything
而且最好使用if陳述句,如果searchText為空,則無需任何搜索即可運行您的查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422748.html
標籤:
上一篇:Express:為什么中間件不能在獨立路由器上正常作業?
下一篇:如何連接有條件的元素?
