node.js - 创建搜索页面

标签 node.js mongodb

我想在nodejs中创建一个搜索页面。在我的代码中,我从另一个页面获取输入并将结果呈现到单独的页面:

app.post("/searchProcess", async (req, res) => {
const keyWord = req.body.search;

const searchMovies = await Movies.find({
name: { $regex: new RegExp(keyWord) }
})
const countMoviesSearch = await Movies.find({
name: { $regex: new RegExp(keyWord) }
}).countDocuments();

console.log(countMoviesSearch);

// console.log(keyWord);
res.render("searchResults",{
  searchMovies: searchMovies,
  countMoviesSearch: countMoviesSearch
});
});

这是我的“searchResults”页面代码

<h1>{{searchMovies.name}}</h1>
<h2>{{countMoviesSearch}}</h2>

我目前得到 countMoviesSearch,但在 searchmovies.name 中我得到未定义,并且我的所有输入变量都是相同的。

最佳答案

find() 方法返回一个 Cursor 对象。您需要调用 toArray() 来获取文档数组。由于您有一个数组,因此您可以访问 .length 属性来获取匹配的电影,以避免再次运行相同的查询

app.post("/searchProcess", async (req, res) => {
const keyWord = req.body.search;

const searchMovies = await Movies.find({
name: { $regex: new RegExp(keyWord) }
}).toArray()

const countMoviesSearch = searchMovies.length

console.log(countMoviesSearch);

// console.log(keyWord);
res.render("searchResults",{
  searchMovies: searchMovies,
  countMoviesSearch: countMoviesSearch
});
});

关于node.js - 创建搜索页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56880827/

相关文章:

node.js - 如何在 expressjs 中将 session 数据存储在文件中?

mysql - 使用对象更新查询

javascript - WebRTC:RTCDataChannel 不是 'open'

node.js - 如何使用 ng-repeat 从两个不同的集合中获取数据

javascript - 如何在nodejs中执行mongoose查询

mongodb - 仅从 MongoDB 中选择一个字段

node.js - 将数千条消息添加到 Azure 存储队列

javascript - 如何在Sequelize中检查过去10天没有事件的日期?

arrays - Mongodb $pull 与 async/await 无法正常工作

mysql - 低延迟如何不=高吞吐量?