合并路由器
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
将所有API代码都写在同一个文件中并不是个好主意。将路由器与其他路由器合并起来非常容易。
借助 TypeScript 4.1 的模板字面量类型,我们还能为过程添加前缀而不破坏类型安全。
实际示例
-
代码位于 /examples/next-prisma-starter/src/server/routers/app.ts
-
所有帖子相关代码都存放在独立路由器中,并通过
post.进行命名空间管理
示例代码
server.tstsconst createRouter = () => {return trpc.router<Context>();};const posts = createRouter().mutation('create', {input: z.object({title: z.string(),}),resolve: ({ input }) => {// ..return {id: 'xxxx',...input,};},}).query('list', {resolve() {// ..return [];},});const users = createRouter().query('list', {resolve() {// ..return [];},});const appRouter = createRouter().merge('user.', users) // prefix user procedures with "user.".merge('post.', posts); // prefix post procedures with "post."
server.tstsconst createRouter = () => {return trpc.router<Context>();};const posts = createRouter().mutation('create', {input: z.object({title: z.string(),}),resolve: ({ input }) => {// ..return {id: 'xxxx',...input,};},}).query('list', {resolve() {// ..return [];},});const users = createRouter().query('list', {resolve() {// ..return [];},});const appRouter = createRouter().merge('user.', users) // prefix user procedures with "user.".merge('post.', posts); // prefix post procedures with "post."