Support pagination for search

This commit is contained in:
Belen Curcio
2017-10-24 10:45:25 -03:00
parent 38abf63cc9
commit fed6654f52
2 changed files with 14 additions and 8 deletions
+12 -6
View File
@@ -9,8 +9,8 @@ const {
ROOT_URL
} = require('../../../config');
// get a list of users.
router.get('/', authorization.needed('ADMIN', 'MODERATOR'), async (req, res, next) => {
const {
value = '',
field = 'created_at',
@@ -21,13 +21,20 @@ router.get('/', authorization.needed('ADMIN', 'MODERATOR'), async (req, res, nex
try {
const queryOpts = {
sort: {[field]: (asc === 'true') ? 1 : -1},
skip: (page - 1) * limit,
limit
};
let [result, count] = await Promise.all([
UsersService
.search(value)
.sort({[field]: (asc === 'true') ? 1 : -1})
.skip((page - 1) * limit)
.limit(limit),
UsersService.count()
.sort(queryOpts.sort)
.skip(queryOpts.skip)
.limit(queryOpts.limit)
.lean(),
UsersService.search(value).count()
]);
res.json({
@@ -41,7 +48,6 @@ router.get('/', authorization.needed('ADMIN', 'MODERATOR'), async (req, res, nex
} catch (e) {
next(e);
}
});
router.post('/:user_id/role', authorization.needed('ADMIN', 'MODERATOR'), async (req, res, next) => {
+2 -2
View File
@@ -668,8 +668,8 @@ module.exports = class UsersService {
* Returns a count of the current users.
* @return {Promise}
*/
static count() {
return UserModel.count();
static count(query = {}) {
return UserModel.count(query);
}
/**