node.js - 如何使用带有多个过滤器的猫鼬分页 v2
问题描述
我使用 Monggose-paginate-v2 用 nodejs 进行分页,但是我有一个问题,如何使用这个库和超过 1 个过滤器或查询?
我的代码
exports.allData = (req, res, next) => {
const { page, size, title, active } = req.query;
var condition = title ? { title: { $regex: new RegExp(title), $options: "i" } } : {};
var condition2 = active ? { active: { $regex: new RegExp(active), $options: "i" } } : {};
const { limit, offset } = getPagination(page, size);
var options = {
populate: [{
path: 'category',
select: 'name'
}],
sort: ({ createdAt: -1 })
};
Article.paginate(condition, condition2, { offset, limit, options })
.then((data) => {
res.send({
totalItems: data.totalDocs,
articles: data.docs,
totalPages: data.totalPages,
currentPage: data.page - 1,
});
})
.catch((err) => {
logger.error(req.method + ": " + req.originalUrl + ", message: " + err.message)
next(createError.InternalServerError())
});
};
我在一行中使用条件,条件2,它不起作用。之前谢谢。
解决方案
pass conditional query as shown below
exports.allData = (req, res, next) => {
const { page, size, title, active } = req.query;
// query documents based on condition
let query={};
if(title){
query.title={ $regex: new RegExp(title), $options: "i" }
}
if(active){
query.active={ $regex: new RegExp(active), $options: "i" }
}
const { limit, offset } = getPagination(page, size);
var options = {
populate: [{
path: 'category',
select: 'name'
}],
sort: ({ createdAt: -1 })
};
Article.paginate(query, { offset, limit, options })
.then((data) => {
res.send({
totalItems: data.totalDocs,
articles: data.docs,
totalPages: data.totalPages,
currentPage: data.page - 1,
});
})
.catch((err) => {
logger.error(req.method + ": " + req.originalUrl + ", message: " + err.message)
next(createError.InternalServerError())
});
};
推荐阅读
- oracle - 甚至为空值存储过程显示数据
- powershell - PIA 事件触发器上的 Powershell 硬崩溃
- javascript - window.screenTop 在多显示器设置中返回错误值
- javafx - 为什么绑定不能与转换一起使用
- html - 自定义 Google 字体不适用于 Flask
- sas - 使用来自另一个数据集的信息在 SAS 中创建网格数据
- javascript - 使用 ajax 和 setTimeout() 发送两个布尔值的问题
- python - 在 python 中应用巴特沃斯带通滤波器后,如何去除信号开始处的大尖峰?
- ruby-on-rails - 在 rspec 测试用例中启动 elasticserach 集群时权限被拒绝
- docker - 如何通过 HTTP API 在 Windows 上构建 Dockerfile?