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

基于高阶函数的 Resolver 中间件组合模式

如果每个 Resolver 都需要日志、鉴权、缓存等逻辑,容易导致重复代码。本课教你编写一个轻量级的中间件工厂,通过函数组合将多个中间件应用在 Resolver 上,而无需修改原有业务逻辑。 · 难度:入门 · +10XP

基于高阶函数的 Resolver 中间件组合模式

不同于常见的 Resolver 装饰器,本课采用纯函数组合:pipe(middleware1, middleware2)(resolver)。中间件接收 next 函数和参数,可灵活处理上下文或修改返回值。例如:一个 logMiddleware 记录参数和耗时,一个 authMiddleware 检查角色,然后通过 compose 函数串联起来。优势在于每个中间件只负责一件事,且可单独测试。最终你会得到一个干净的 Resolver 定义:const user = compose(log, auth('ADMIN'))(userResolver)

function logMiddleware(next) {
  return async (parent, args, context, info) => {
    console.time(info.fieldName);
    const result = await next(parent, args, context, info);
    console.timeEnd(info.fieldName);
    return result;
  };
}

function authMiddleware(role) { return (next) => async (parent, args, context, info) => { if (!context.user?.role.includes(role)) throw new Error('Forbidden'); return next(parent, args, context, info); }; }

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

🏆 学习排行

加载中...

📊 统计

📖 147 篇
0 完成
🔥 0