You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中结合EJS从MySQL获取数据并按最新用户排序?

解决EJS渲染用户表格时最新用户置顶的问题

Hey there! 要让最新创建的用户排在表格最顶部,有两种实用的方案,优先推荐从数据库层面解决,效率更高:

方案1:MySQL查询时直接排序(最优)

这是最靠谱的方式,因为让数据库来处理排序比前端处理更高效,尤其是数据量较大的时候。

假设你的用户表有一个记录创建时间的字段(比如created_at,类型是DATETIME或TIMESTAMP),只需要修改你的查询SQL语句,加上降序排序:

SELECT * FROM users ORDER BY created_at DESC;

这里的DESC表示降序排列,会让最新创建的用户(created_at值最大的)排在结果集的最前面。

把这个排序后的结果传给EJS模板,你原来的循环代码完全不用改,直接就能渲染出最新用户置顶的表格啦:

<% for(var i=0; i<users.length; i++ ){ %>
  <tr>
    <td> <%= users[i].username %> </td>
    <td> <%= users[i].first_name %> </td>
    <td> <%= users[i].last_name %> </td>
    <td> <%= users[i].email %> </td>
    <td> <%= users[i].type %> </td>
  </tr>
<% } %>

方案2:在EJS模板中反转数组(应急方案)

如果暂时没法修改后端的SQL查询,可以在EJS里直接反转用户数组,让最新的用户跑到前面。

注意:

直接用users.reverse()会修改原数组,如果后续模板还要用到原顺序的用户数据,建议先复制一份再反转:

<% const reversedUsers = [...users].reverse(); %>
<% for(var i=0; i<reversedUsers.length; i++ ){ %>
  <tr>
    <td> <%= reversedUsers[i].username %> </td>
    <td> <%= reversedUsers[i].first_name %> </td>
    <td> <%= reversedUsers[i].last_name %> </td>
    <td> <%= reversedUsers[i].email %> </td>
    <td> <%= reversedUsers[i].type %> </td>
  </tr>
<% } %>

如果不需要保留原数组,也可以直接反转后循环:

<% users.reverse(); %>
<% for(var i=0; i<users.length; i++ ){ %>
  <!-- 原循环代码不变 -->
<% } %>

小提醒

不管用哪种方案,都要确保你的用户表中有能准确标识创建顺序的字段(比如自增ID或者创建时间),如果是用自增ID排序,SQL可以写成ORDER BY id DESC,效果是一样的~

内容的提问来源于stack exchange,提问作者Max Kasem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:41:06