使用Mongoose在Node / Express应用程序中处理MongoDB中的聚合。路线如下:
router.get("/search", async (req, res) => {
let movies;
if(req.query.search){
escapeRegex(req.query.search);
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
movies = await Movie.aggregate(
[
{ '$match': {'title': regex} },
{ '$limit': 5 }
], (err, result) => {
if (err) {
console.log(err)
} else {
console.log(result)
}
}
);
console.log("Result:", movies);
res.render("atlas/search", {movies: returnedMovies});
} else {
Movie.find({}).sort('title').limit(10).exec((err, allMovies) => {
if(err){
console.log(err);
} else {
res.render("atlas/search",{movies: allMovies});
}
});
}
});
本质上,我在这里做的是从搜索栏中获取用户输入,然后通过聚合运行该输入;然而,我无法得到任何结果(点击我的404未找到页面),并且通过我的任何console.log
尝试都没有返回到控制台。else
路由,如果没有搜索,则返回前10部电影,工作正常。
我错过了什么?
2条答案
按热度按时间wh6knrhe1#
替换此代码
到
这个也许能帮上忙
0ejtzxu12#
要进行基于正则表达式的搜索,需要在
$match
stage中使用运算符$regex
。如下所示: