用途:把数据库与外部 API 的访问集中到 Next.js 的数据访问层(DAL),统一处理安全、授权与缓存,适合需要集中管理数据查询与敏感数据的服务端场景。\n\n主要能力:将原始数据库或 API 数据转换为 DTO 后再返回组件;在每个 DAL 函数内验证授权;用 React 的 cache() 去重同一渲染周期内的请求;用 taintObjectReference 或 taintUniqueValue 对敏感对象做 taint 检查,防止意外暴露到客户端。\n\n使用方式:在 services/ 或 lib/data.ts 建立带 import 'server-only' 的 DAL 模块;每个函数内使用 await auth() 校验身份;返回前转换为纯对象;用 cache() 包装 DAL 函数;抛出标准化错误(NotFoundError、UnauthorizedError),由 error.tsx 或 notFound() 捕获。\n\n限制:客户端组件不能导入 DAL 文件,需通过 Server Actions 或 Route Handlers 作为桥接。避免在 DAL 之外做授权检查、返回原始 ORM 实例、在服务端组件中 fetch('localhost/api'),以及在客户端组件中导入 DAL。
nextjs-data-access-layer
编程与开发
更新于 10-15 22:13