From 40a978c546f68398bbf073ff343438403771d602 Mon Sep 17 00:00:00 2001 From: Pau Costa Date: Sun, 11 Feb 2024 17:36:02 +0100 Subject: [PATCH] :poop: TypeORM was failing to load associated classes methods Signed-off-by: Pau Costa --- server/src/controller/postController.ts | 30 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/server/src/controller/postController.ts b/server/src/controller/postController.ts index b10b222..2e41794 100644 --- a/server/src/controller/postController.ts +++ b/server/src/controller/postController.ts @@ -141,20 +141,32 @@ export class PostController { const user = await this.userRepository.findOne({ where: { id: req.user.id }, relations: { - followed: true, - posts: { likedBy: true, comments: true }, + followed: { posts: { likedBy: true, comments: true } }, + posts: { + likedBy: true, + comments: true, + createdBy: true, + }, }, }); + // Get all posts from the followed users const followedPosts = user.followed - .map((followedUser) => followedUser.posts) + .map((followedUser) => { + followedUser.deleteSensitiveFields(); + if (followedUser.posts) { + return followedUser.posts.map((post) => { + if (post.likedBy.length > 0) { + post.likedBy.forEach((user) => user.deleteSensitiveFields()); + } + return { + ...post, + createdBy: followedUser, + }; + }); + } + }) .flat(); - - // Remove sensitive fields - followedPosts.forEach((post) => { - post.deleteSensitiveFields(); - }); - res.send(followedPosts); });