From 9e8bb069210c7d45bb5bd7492b0d7e5cd5b64706 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Mon, 6 Jun 2022 10:00:49 +0200 Subject: [PATCH] fix query trim feed --- .../src/controllers/PostsController/index.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/server/src/controllers/PostsController/index.js b/packages/server/src/controllers/PostsController/index.js index f8aa1ca3..63e49031 100644 --- a/packages/server/src/controllers/PostsController/index.js +++ b/packages/server/src/controllers/PostsController/index.js @@ -78,7 +78,7 @@ export default class PostsController extends Controller { const postData = await Post.findById(post_id) postData.likes = postData.likes.filter(id => id !== user_id) - + await this.savePostData(postData) global.wsInterface.io.emit(`post.unlike`, { @@ -144,21 +144,28 @@ export default class PostsController extends Controller { "/feed": Schematized({ select: ["user_id"] }, async (req, res) => { - const feedLength = req.query?.feedLength ?? 25 + const feedLimit = req.query?.limit ?? 20 + const feedTrimIndex = req.query?.trim ?? 0 - // fetch posts from later of lenghtOffset with a maximum of feedLength - // make sort by date descending + // make sure that sort by date descending + // trim index is used to get the last n posts let posts = await Post.find(req.selection) .sort({ created_at: -1 }) - .limit(feedLength) + .skip(feedTrimIndex) + .limit(feedLimit) // fetch and add user data to each post - posts = posts.map(async (post) => { + posts = posts.map(async (post, index) => { const user = await User.findById(post.user_id) + if (feedTrimIndex > 0) { + index = Number(feedTrimIndex) + Number(index) + } + return { ...post.toObject(), user: user.toObject(), + key: index, } })