From 3b684e08caa8a686c3d5096b8a08f91079eb7747 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Thu, 5 Jun 2025 11:10:19 +0200 Subject: [PATCH] [web] fetch token users in a single db query per access mode (#26078) * [web] skip db query when getting empty list of users * [web] fetch token users in a single db query per access mode GitOrigin-RevId: fa5d9edcb761bd5d5e5ea07d137a5a86efdbdd5c --- services/web/app/src/Features/User/UserGetter.js | 1 + services/web/test/unit/src/User/UserGetterTests.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/services/web/app/src/Features/User/UserGetter.js b/services/web/app/src/Features/User/UserGetter.js index bce4568880..a5fbe42651 100644 --- a/services/web/app/src/Features/User/UserGetter.js +++ b/services/web/app/src/Features/User/UserGetter.js @@ -269,6 +269,7 @@ const UserGetter = { getUsers(query, projection, callback) { try { query = normalizeMultiQuery(query) + if (query?._id?.$in?.length === 0) return callback(null, []) // shortcut for getUsers([]) db.users.find(query, { projection }).toArray(callback) } catch (err) { callback(err) diff --git a/services/web/test/unit/src/User/UserGetterTests.js b/services/web/test/unit/src/User/UserGetterTests.js index 0e0c170fd6..315a8073d6 100644 --- a/services/web/test/unit/src/User/UserGetterTests.js +++ b/services/web/test/unit/src/User/UserGetterTests.js @@ -119,6 +119,17 @@ describe('UserGetter', function () { }) }) + it('should not call mongo with empty list', function (done) { + const query = [] + const projection = { email: 1 } + this.UserGetter.getUsers(query, projection, (error, users) => { + expect(error).to.not.exist + expect(users).to.deep.equal([]) + expect(this.find).to.not.have.been.called + done() + }) + }) + it('should not allow null query', function (done) { this.UserGetter.getUser(null, {}, error => { error.should.exist