如何在我的应用程序中显示最新用户帖子?

huangapple go评论82阅读模式
英文:

How can i display newest user post in my app?

问题

如何在我的应用程序中显示最新用户帖子?我有一个后端路由,用于显示用户帖子,但我希望该路由显示用户的最新帖子。那么我该如何在我的代码中实现这一点?

我的代码:

router.get('/postdata', async (req, res) => {
    try {
        // 在数据库中查找所有用户
        const users = await User.find();

        // 遍历用户数组并返回一个对象数组
        // 具有相同的用户名、个人资料图像和帖子图像
        const userData = users.flatMap(user => {
            return user.posts.map(post => ({
                username: user.username,
                profile_image: user.profilepic,
                postImage: post.post,
            }));
        });

        return res.json(userData);
    } catch (err) {
        return res.status(500).json({ error: err.message });
    }
});
英文:

How can i display newest user post in my app? i have a backend route which display user post but i want that route display latest post of user So how can i do that in my code?

My code:

router.get('/postdata', async (req, res) => {
    try {
        // Find all users in the database
        const users = await User.find();

        // Map over the users array and return an array of objects
        // with the same username, profile_image, and postImage
        const userData = users.flatMap(user => {
            return user.posts.map(post => ({
                username: user.username,
                profile_image: user.profilepic,
                postImage: post.post,
            }));
        });

        return res.json(userData);
    } catch (err) {
        return res.status(500).json({ error: err.message });
    }
});

答案1

得分: 1

如果你的posts模型具有created_atupdated_at属性来跟踪图像上传的时间,你可以使用这些属性来对数组进行排序。

假设你的userData数组具有类似以下的输出:

[
  {
    username: 'user1',
    profile_image: 'https://your_domain.com/user1-profile.jpg',
    postImage: 'https://your_domain.com/user1-post1.jpg',
    created_at: '2023-01-01T11:00:00.000'
  },
  {
    username: 'user2',
    profile_image: 'https://your_domain.com/user2-profile.jpg',
    postImage: 'https://your_domain.com/user2-post1.jpg',
    created_at: '2023-01-01T12:00:00.000'
  }
]

然后,你可以在渲染之前对数组进行排序。

const sorteduserData = userData.sort((a, b) => {
  return new Date(b.created_at) - new Date(a.created_at);
});

最佳实践是在后端执行排序,以减少前端的开销并提高应用程序的加载速度。

许多无头 CMS 都内置了这些功能。

英文:

If your posts model has created_at or updated_at properties that keep track of when an image was uploaded, you could use that to sort the array in your map.

Let's say your userData array has similar output to this.

[
  {
    username: 'user1',
    profile_image: 'https://your_domain.com/user1-profile.jpg',
    postImage: 'https://your_domain.com/user1-post1.jpg',
    created_at: '2023-01-01T11:00:00.000

  },
  {
    username: 'user2',
    profile_image: 'https://your_domain.com/user2-profile.jpg',
    postImage: 'https://your_domain.com/user2-post1.jpg',
    created_at: '2023-01-01T12:00:00.000

  }
]

Then you can sort the array before rendering it.

const sorteduserData = userData.sort((a, b) => {
  return new Date(b.created_at) - new Date(a.created_at);
});

It's a good practice to have your backend do the sort to reduce overhead on the front-end and to have your application load faster.

Many of headless CMSs have these features built in.

huangapple
  • 本文由 发表于 2023年1月3日 22:00:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/74994391.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定