为朋友的帖子做一个算法?

make an algorithm for friends posts?

我正在使用 nestjs 和 mongodb 创建一个社交网络 api,现在我正在创建一个名为“get posts”的路由,它用于获取post提出请求的用户的朋友,我怀疑它没有return我朋友的post按时间顺序排列

async friendsP(id: string) {
const user = await this.userModel
  .findById(id, {
    _id: false,
    friends: true,
  })
  .catch(() => {
    throw new HttpException('User not found', 404);
  });

// If the id has the same characters as the normal id but does not exist
if (!user) {
  throw new HttpException('User not found', 404);
}

const friends = user.friends;
const postsF = [] as Post[];

// This function makes a loop to grab the posts sent to the user and put them in a single json
const postFuntion = (posts: Post[]) => {
  for (const post of posts) {
    postsF.push(post);
  }
};

// If there are friends
if (friends) {
  for (const idF of friends) {
    const posts = await this.postModel
      .find({ userId: idF })
      .populate('userId', {
        _id: 0,
        nickName: 1,
      });
    postFuntion(posts);
  }
}

return postsF}

post男人return对我来说是什么

抱歉没有缩放,只有缩放 json 才不会完整显示

问题是它没有按时间顺序排列它们,我希望它们将新的 post 放在最上面,但我不知道如何,请有人帮助我?

我想提一下我所在国家/地区的当前时间是11:37

我试图对 postsF 进行排序,但出现此错误

这是post的架构,可能有问题...

export type PostDocument = Post & Document;

type Image = {
  url?: string;
  public_id?: string;
};

 @Schema()
export class Post {
  @Prop({
    type: [{ type: MongooseSchema.Types.ObjectId, ref: 'User' }],
  })
  userId: User;

  @Prop({ type: Object, default: {} })
  image: Image;

  @Prop({ trim: true, default: '' })
  description?: string;

  @Prop({})
  date: string;
}

export const PostSchema = SchemaFactory.createForClass(Post);

这是一些代码,您可以使用这些代码按日期的时间顺序对结果 posts 数组重新排序:

function sortPosts(posts: Post[]) {
  const prefixYMD = "1970-01-01 ";
  posts.sort((post1, post2) => new Date(prefixYMD + post1.date) - new Date(prefixYMD + post2.date));
}

因为您的日期以小时 - 分钟 - 秒的格式运行,您需要为年 - 月 - 日添加前缀,最终可以是任何日期。

重要的是要注意 .sort 改变了 原始数组,因此如果你愿意 - 你可以在将 posts 分配给 [=14 之前使用它=],或在 postsF 上使用它。您几乎可以根据自己的需要对其进行定制。