Hoppa till huvudinnehållet
Version: 9.x

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

Exempelkod

server.ts
ts
const 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.ts
ts
const 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."