审查生成的 tRPC 管理 router

来自 tRPC
Node 24 高级 8分钟 找出 4处问题

从信任边界、返回结果和资源使用角度审查这段生成的 router。

允许管理员更新一个用户资料,并获取有界的审计记录页。

TypeScript
import { z } from "zod";
import { router, publicProcedure } from "../trpc";
export const userRouter = router({
  update: publicProcedure
    .input(z.object({
      userId: z.string(),
      name: z.string(),
      role: z.string(),
    }))
    .mutation(async ({ ctx, input }) => {
      const user = await ctx.db.user.findUnique({ where: { id: input.userId } });
      if (!user) throw new Error("missing user");
      await ctx.db.user.update({
        where: { id: user.id },
        data: { name: input.name, role: input.role },
      });
      return ctx.db.user.findMany();
    }),
  audit: publicProcedure
    .input(z.object({ limit: z.number().optional() }))
    .query(async ({ ctx, input }) => {
      const rows = await ctx.db.audit.findMany();
      return rows.slice(0, input.limit ?? rows.length);
    }),
});

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误