瀏覽代碼

create getSnapshotUsernames method

Shun Miyazawa 3 年之前
父節點
當前提交
94908e227d
共有 2 個文件被更改,包括 11 次插入4 次删除
  1. 9 0
      packages/app/src/server/models/activity.ts
  2. 2 4
      packages/app/src/server/routes/apiv3/users.js

+ 9 - 0
packages/app/src/server/models/activity.ts

@@ -116,4 +116,13 @@ activitySchema.statics.getPaginatedActivity = async function(limit: number, offs
   return paginateResult;
 };
 
+activitySchema.statics.getSnapshotUsernames = async function(q: string, limit: number) {
+  const result = await this.aggregate([
+    { $match: { 'snapshot.username': new RegExp(q) } },
+    { $group: { _id: '$snapshot.username' } },
+    { $limit: limit },
+  ]);
+  return result.map(r => r._id);
+};
+
 export default getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);

+ 2 - 4
packages/app/src/server/routes/apiv3/users.js

@@ -968,10 +968,8 @@ module.exports = (crowi) => {
       }
 
       if (stringToBoolean(req.query.isIncludeActivitySnapshotUsernames) && req.user.admin) {
-        const userActivies = await Activity.find({
-          'snapshot.username': { $regex: q, $options: 'i' },
-        });
-        Object.assign(data, { userActivies });
+        const activitySnapshotUsernames = await Activity.getSnapshotUsernames(q, limit);
+        Object.assign(data, { activitySnapshotUsernames });
       }
 
       return res.apiv3({ data });