⚡ 编程实验室🏗️ 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🎮 游戏🏠 网站首页

利用 DataLoader 批量鉴权:N+1权限检查优化

将用户权限检查合并为批量操作,避免每行数据独立查询。 · 难度:入门 · +10XP

批量权限加载器

传统DataLoader用于数据库批量查询,但同样适用于权限验证。本教程创建PermissionLoader,将多个字段的权限检查合并为一次数据库查询(如SELECT * FROM permissions WHERE userId IN (...) AND resourceId IN (...)),大幅减少认证查询次数。同时处理角色继承、缓存与过期。

const permissionLoader = new DataLoader(async (keys) => {
  const [userId, resourceIds] = keys[0];
  const permissions = await db.query(
    'SELECT resource_id, level FROM permissions WHERE user_id = $1 AND resource_id = ANY($2)',
    [userId, resourceIds]
  );
  return resourceIds.map(id => permissions.find(p => p.resource_id === id) || null);
});

// 在解析器中使用 const allowed = await permissionLoader.load([userId, resource.id]);

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 147 篇
0 完成
🔥 0