Combinación de Routers
Traducción Beta No Oficial
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Escribir todo el código de la API en un mismo archivo no es una buena idea. Es fácil combinar routers con otros routers.
Gracias a los tipos de literales plantilla de TypeScript 4.1, también podemos prefijar los procedimientos sin comprometer la seguridad de tipos.
Ejemplo práctico
-
Código en /examples/next-prisma-starter/src/server/routers/app.ts
-
Todo el código para publicaciones vive en un router separado con espacio de nombres
post.
Código de ejemplo
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."