라우터 병합
비공식 베타 번역
이 페이지는 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."