diff --git a/routes/api/users/index.js b/routes/api/users/index.js index 00b776e5b..0cf1c997b 100644 --- a/routes/api/users/index.js +++ b/routes/api/users/index.js @@ -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) => { diff --git a/services/users.js b/services/users.js index 7968f7e83..4d974f4a4 100644 --- a/services/users.js +++ b/services/users.js @@ -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); } /**