Fusion de routeurs
Traduction Bêta Non Officielle
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Écrire tout le code d'API dans un seul fichier n'est pas idéal. Heureusement, fusionner des routeurs avec d'autres routeurs est très simple.
Grâce aux types littéraux de modèle de TypeScript 4.1, nous pouvons également préfixer les procédures sans compromettre la sécurité des types.
Exemple pratique
-
Code disponible à /examples/next-prisma-starter/src/server/routers/app.ts
-
Tout le code relatif aux posts est isolé dans un routeur distinct et utilise l'espace de nommage
post.
Exemple de code
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."