diff --git a/packages/hydrooj/src/model/domain.ts b/packages/hydrooj/src/model/domain.ts index db060092b..0a2d56f23 100644 --- a/packages/hydrooj/src/model/domain.ts +++ b/packages/hydrooj/src/model/domain.ts @@ -160,11 +160,18 @@ class DomainModel { deleteUserCache(udoc); return res; } + if (!uid.length) return undefined; const affected = await UserModel.getMulti({ _id: { $in: uid } }) .project<{ _id: number, mail: string, uname: string }>({ mail: 1, uname: 1 }) .toArray(); for (const udoc of affected) deleteUserCache(udoc); - return await collUser.updateMany({ domainId, uid: { $in: uid } }, update, { upsert: true }); + return await collUser.bulkWrite([...new Set(uid)].map((id) => ({ + updateOne: { + filter: { domainId, uid: id }, + update, + upsert: true, + }, + }))); } static async setJoin(domainId: string, uid: MaybeArray, join: boolean) {