React数据库调用上按日期排序不起作用,只是先返回最旧的



我有一个Strapi CMS,我试图按照最新到最旧的顺序对博客文章进行排序。我通过"published_at"属性执行此操作。今天早上我在谷歌上搜索了一下,认为最明智的解决方案是使用"sort(("。

然而,它不起作用,我不明白为什么。

这是我正在尝试的代码:

const posts = await strapiInstance.getEntries('blog-posts')
const sortedPosts = posts.sort((a, b) => b.published_at - a.published_at)
console.log(sortedPosts)

控制台日志如下所示:

0 Object
Author: "Jon Nicholson"
published_at: "2020-11-20T08:48:08.875Z"
updatedAt: "2020-12-06T10:59:31.723Z"
1 Object
Author: "Jon Nicholson"
published_at: "2020-11-26T08:51:52.414Z"
updatedAt: "2020-12-06T10:59:44.081Z"

我想知道是否需要在排序之前将其转换为整数?

但任何反馈都将不胜感激。

published_at是一个String参数,因此如果对它们使用减法运算,它将返回NaN。您可以在控制台上测试:

"2020-11-20T08:48:08.875Z" - "2020-11-26T08:51:52.414Z"

还有两个其他选项:通过字符串进行比较

const sortedPosts = posts.sort((a, b) =>
(b.published_at > a.published_at) 
? 1
: (b.published_at === a.published_at ? 0 : -1)
)

或者在将它们转换为日期后进行比较(如果总是返回有效的日期字符串(

const sortedPosts = posts.sort((a, b) => new Date(b.published_at) - new Date(a.published_at))

试试吧,只需交换一个&b在排序回调中。

const posts = await strapiInstance.getEntries('blog-posts')
const sortedPosts = posts.sort((a, b) => a.published_at - b.published_at)
console.log(sortedPosts)

最新更新