Node/express 后端在调用 API(MERN 堆栈)时崩溃

Node/express backend crashing when calling the API (MERN stack)

路由器:

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/' 设置默认获取来颠覆这一点。我只是想更好地理解为什么会发生这种情况,或者是否有更好的方法来处理这种情况。我查看了快速验证器,但这只对发布数据有意义,对获取数据没有意义。是的,可以验证前端,但是有很多方法可以解决这个问题,而且服务器也不安全。

您不能在不传递其参数的情况下调用端点,我认为崩溃是因为如果您不传递 searchtext 将调用另一个端点。 我建议改用 query

/allmovies?searchtext=anything

而且最好使用 if 语句,如果 searchText 为空,运行 您的查询无需任何搜索。