我有一个端到端的使用T3堆栈的类型api,我可以通过我的Next.js应用程序访问所有的数据和类型。但是我也有一个用于填充数据库的Node.js后端。我的Node.js设置如下所示:
app.use(
'/trpc',
trpcExpress.createExpressMiddleware({
router: appRouter,
createContext,
})
);
app.use('/fund', fundRouter);当前,我通过启动Node服务器并调用它的self来填充DB
// 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请求
const { mutate, error } = trpc.useMutation(['fund.createManyFunds'], {
onSuccess: () => {
console.log("added items");
},
});
const onSubmit = (values: createManyFundSchema) => {
mutate(values);
};但现在的问题是,我如何能从服务器端做到这一点。使用上面的代码,我能够在路径"fund.createManyFunds“上获得intellisense,但无法提供与请求一起发送的数据。
// 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服务器
发布于 2022-09-12 07:29:49
您可以制作一个香草trpc客户端:
https://trpc.io/docs/v9/vanilla
文档中的示例:
import type { AppRouter } from '../path/to/server/trpc';
import { createTRPCClient } from '@trpc/client';
const client = createTRPCClient<AppRouter>({
url: 'http://localhost:5000/trpc',
});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' };https://stackoverflow.com/questions/73613257
复制相似问题