我有这个问题,我不知道如何在Mongoose文本搜索模块中进行分页,我是初学者,所以请帮忙,这是我的代码:
searchModul.create({ title: title, description: description }, function (err) {
if (err) return handleError(err);
searchModul.textSearch(title, function (err, output) {
if (err) return handleError(err);
res.render('search', {
title : 'title',
results : output.results
});
});
});
我也想知道如何在search.ejs视图中显示该分页。并提前感谢。
答案 0 :(得分:0)
要实施分页,请使用$limit为每个查询定义限制,并$skip导航页面。
来自文档:
$limit
采用正整数,指定要传递的最大文档数。
$skip
采用一个正整数,指定要跳过的最大文档数。
之前有类似的问题,请查看答案here以及更详细的教程here。
希望有所帮助!
答案 1 :(得分:0)
我想你想要这样的东西:
searchModul.find({ $text: { $search: title }}).skip(50).limit(50).exec(function (err, output) {
if (err) return handleError(err);
res.render('search', {
title : 'title',
results : output.results
});
});
这将返回匹配的第二个50项。 .skip(50)跳过的项数和.limit(50)是要返回的项数。
答案 2 :(得分:0)
const field = req.query.field;
const search = {};
search[field] = req.query.searchValue;
search["role"] = req.params._role;
search["status"] = parseInt(req.query.status);
user = await Users.paginate(search, {
limit: parseInt(req.query.limit),
page: parseInt(req.query.page),
});
或
var ObjectId = mongoose.Types.ObjectId;
let _id = new ObjectId(req.query.q);;
user = await Users.paginate(
{
role: req.params._role,
_id: _id,
},
{
limit: parseInt(req.query.limit),
page: parseInt(req.query.page),
});