⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Relay 风格分页深层优化:连接类型与游标编码

从底层实现高效的游标分页,覆盖数据库索引设计、游标序列化以及增量加载。 · 难度:入门 · +10XP

Relay 风格分页深层优化:连接类型与游标编码

本教程不仅教授如何使用 connection 类型,还深入游标的生成策略:基于时间戳、UUID 或 base64 编码的排序键。我们实现一个可复用 paginate 函数,利用数据库游标(如 SQL 的 WHERE + LIMIT)代替 OFFSET,避免大偏移量性能问题。同时,讨论如何利用 hasNextPage 与 totalCount 的预计算缓存,以及如何在前端使用 @connection 指令合并缓存。

function paginate(query, { first, after }) {
  const cursor = after ? decodeCursor(after) : null;
  return query
    .where(cursor ? { id: { $gt: cursor } } : {})
    .limit(first + 1)
    .then(rows => ({
      edges: rows.slice(0, first).map(row => ({
        node: row,
        cursor: encodeCursor(row.id)
      })),
      pageInfo: {
        hasNextPage: rows.length > first
      }
    }));
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 147 篇
0 完成
🔥 0