微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Prisma 中按自定义值对项目进行排序? 试图在 Hacker News 或 Reddit 上实现“按热排序”

如何解决如何在 Prisma 中按自定义值对项目进行排序? 试图在 Hacker News 或 Reddit 上实现“按热排序”

我正在尝试实现类似于 HackerNews/Reddit 所做的“按热排序”,如here 所述。

我想像这样计算帖子的排名:

const age = new Date() - createdAt
const gravity = 1.8
const rankscore = (score - 1) / (age + 2) ** gravity

Post 模型有一个 score 值 - 帖子收到的点赞数,以及 createdAt - 创建时间。 rankscore 越高,我希望帖子越靠近列表顶部。所以我想取 scorecreatedAt 值,用它们来计算 rankscore,然后通过它来做 orderBy

prisma 中实现此功能的正确方法是什么?

现在我只是像这样返回最受好评的帖子列表:

prisma.post.findMany({
  where: {
    authorId: authorId,published: args.published || undefined,},orderBy: [{ score: "desc" }],})

因此很容易根据模型中已经存在的字段对帖子进行排名,但我需要在页面加载时实时计算它,因为 rankscore 取决于帖子的年龄,并且不会使在数据库中存储这样的东西是有意义的。

Here's 我正在编写的实际解析器代码(请参阅 posts 查询)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。