如何解决如何在 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
越高,我希望帖子越靠近列表顶部。所以我想取 score
和 createdAt
值,用它们来计算 rankscore
,然后通过它来做 orderBy
。
现在我只是像这样返回最受好评的帖子列表:
prisma.post.findMany({
where: {
authorId: authorId,published: args.published || undefined,},orderBy: [{ score: "desc" }],})
因此很容易根据模型中已经存在的字段对帖子进行排名,但我需要在页面加载时实时计算它,因为 rankscore
取决于帖子的年龄,并且不会使在数据库中存储这样的东西是有意义的。
Here's 我正在编写的实际解析器代码(请参阅 posts
查询)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。