首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js使用typesafe trpc将数据传递到路由

Node.js使用typesafe trpc将数据传递到路由
EN

Stack Overflow用户
提问于 2022-09-05 18:08:38
回答 1查看 352关注 0票数 0

我有一个端到端的使用T3堆栈的类型api,我可以通过我的Next.js应用程序访问所有的数据和类型。但是我也有一个用于填充数据库的Node.js后端。我的Node.js设置如下所示:

代码语言:javascript
复制
app.use(
  '/trpc',
  trpcExpress.createExpressMiddleware({
    router: appRouter,
    createContext,
  })
);

app.use('/fund', fundRouter);

当前,我通过启动Node服务器并调用它的self来填充DB

代码语言:javascript
复制
// Going to http://localhost:3001/fund/create

axios.post('http://localhost:3001/trpc/fund.createManyFunds', data)
.then((x) => x.data)
.catch((e) => e);

但是我不觉得我在这里使用的是类型- am特性,我有可以从我的fund.schema.ts export type CreateManyInput = z.TypeOf<typeof createManyFundSchema>;中访问的类型,它被用来帮助创建上述axios调用的数据。

在客户机中,我可以使用const trpc = createReactQueryHooks<AppRouter>()import { createReactQueryHooks } from '@trpc/react';发出一个简单的post请求

代码语言:javascript
复制
const { mutate, error } = trpc.useMutation(['fund.createManyFunds'], {
  onSuccess: () => {
    console.log("added items");
  },
});

const onSubmit = (values: createManyFundSchema) => {
  mutate(values);
};

但现在的问题是,我如何能从服务器端做到这一点。使用上面的代码,我能够在路径"fund.createManyFunds“上获得intellisense,但无法提供与请求一起发送的数据。

代码语言:javascript
复制
// Going to http://localhost:3001/fund/create
// Should replace above axios.post request
// Able to create a trpc server "client"?

const client = createTRPCClient<AppRouter>({url: "./"})
client.mutation("fund.createManyFunds", data)  

在我的节点应用程序中有这个功能吗?还是我用简单的帖子对我自己的trpc路由进行了正确的处理?

如果重要的话,我有一个NX项目,它的结构类似于这个应用程序:Node.js服务器,Next.js client libs:trpc服务器

EN

回答 1

Stack Overflow用户

发布于 2022-09-12 07:29:49

您可以制作一个香草trpc客户端:

https://trpc.io/docs/v9/vanilla

文档中的示例:

代码语言:javascript
复制
import type { AppRouter } from '../path/to/server/trpc';
import { createTRPCClient } from '@trpc/client';
const client = createTRPCClient<AppRouter>({
  url: 'http://localhost:5000/trpc',
});
代码语言:javascript
复制
const bilbo = await client.query('getUser', 'id_bilbo');
// => { id: 'id_bilbo', name: 'Bilbo' };
const frodo = await client.mutation('createUser', { name: 'Frodo' });
// => { id: 'id_frodo', name: 'Frodo' };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73613257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档