Sammanfoga Routrar
Inofficiell Beta-översättning
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Att skriva all API-kod i samma fil är inte en bra idé. Det är enkelt att slå ihop routrar med andra routrar.
Tack vare mallsträngstyper (template literal types) i TypeScript 4.1 kan vi även prefixa procedurer utan att bryta typsäkerheten.
Praktiskt exempel
-
Kod finns på /examples/next-prisma-starter/src/server/routers/app.ts
-
All kod för inlägg finns i en separat router med namnutrymmet
post.
Exempelkod
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."