mongodb 分页封装(传统分页)【2020-10-30 修正】

const pageFn = ({ MATCH = [], OTHERMATCH = [], OTHERFACET = {}, FACET_KEY = {}, limit = 20, page = 1 } = {}) => {
return [{
$facet: {
'list': [
...MATCH,
{
$skip: (page - 1) * limit
},
{
$limit: limit * 1
},
...OTHERMATCH.length ? OTHERMATCH : []
],
'page': [
...MATCH,
{
$count: 'count'
}
],
...OTHERFACET
}
}, {
$project: {
list: {
$cond: [{ $eq: [{ $size: '$list' }, 0] },
[], '$list'
]
},
page: {
$cond: [{ $eq: [{ $size: '$page' }, 0] },
[{ count: 0 }], '$page'
]
},
count: 1,
...FACET_KEY
}
}, {
$unwind: '$page'
}, {
$addFields: {
'page.limit': limit * 1,
'page.page': page * 1
}
}]
};
module.exports = pageFn

0 个评论

要回复文章请先登录注册