为朋友的帖子做一个算法?
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
上使用它。您几乎可以根据自己的需要对其进行定制。
我正在使用 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
上使用它。您几乎可以根据自己的需要对其进行定制。