zs 1 rok pred
rodič
commit
0476c97872
1 zmenil súbory, kde vykonal 15 pridanie a 24 odobranie
  1. 15 24
      src/service/platform/chat.service.ts

+ 15 - 24
src/service/platform/chat.service.ts

@@ -18,33 +18,23 @@ export class ChatService extends BaseService<modelType> {
   async chat(filter) {
     const user = this.ctx.user;
     const list = await this.model.aggregate([
-      {
-        $match: {
-          ...filter,
-          $or: [{ sender_id: get(user, '_id') }, { receiver_id: get(user, '_id') }],
-        },
-      },
-      { $group: { _id: '$sender_id', other: { $first: '$$ROOT' } } },
-      {
-        $replaceRoot: {
-          newRoot: '$other',
-        },
-      },
+      { $match: { ...filter, $or: [{ sender_id: get(user, '_id') }, { receiver_id: get(user, '_id') }] } },
+      { $group: { _id: { sender_id: '$sender_id', receiver_id: '$receiver_id' }, other: { $first: '$$ROOT' } } },
+      { $replaceRoot: { newRoot: '$other' } },
     ]);
     const data = [];
     for (const val of list) {
-      let id = '';
-      if (val.sender_id !== get(user, '_id')) id = val.sender_id;
-      else id = val.receiver_id;
-      const userData = await this.uModel.findById(id).lean();
-      data.push({
-        _id: get(userData, '_id'),
-        nick_name: get(userData, 'nick_name'),
-        icon: get(userData, 'icon'),
-        send_time: val.send_time,
-        content: val.content,
-        type: val.type,
-      });
+      if (val.sender_id !== get(user, '_id')) {
+        const userData = await this.uModel.findById(val.sender_id).lean();
+        data.push({
+          _id: get(userData, '_id'),
+          nick_name: get(userData, 'nick_name'),
+          icon: get(userData, 'icon'),
+          send_time: val.send_time,
+          content: val.content,
+          type: val.type,
+        });
+      }
     }
     return data;
   }
@@ -59,6 +49,7 @@ export class ChatService extends BaseService<modelType> {
       })
       .skip(skip)
       .limit(limit)
+      .sort({ send_time: 1 })
       .lean();
     const data = [];
     for (const val of list) {