根据here文档,您可以使用const caller = route.createCaller({})
函数在服务器端调用另一个路由。但是,如果路由在其自身内,是否可以使用this
关键字来实现?如果不能,如何调用路由兄弟?
import { z } from "zod";
import { router, publicProcedure } from "../trpc";
export const exampleRouter = router({
hi: publicProcedure.query(async () => {
return "Hi there!";
}),
world: publicProcedure.query(async () => {
return "World";
}),
hello: publicProcedure.query(async function () {
const caller = this.createCaller({});
const result = await caller.example.hi();
}),
});
1条答案
按热度按时间d6kp6zgx1#
虽然我不知道您所问问题的确切答案,但根据您为服务器端调用提供的链接,
createCaller
* 不应 * 用于从另一个过程中调用另一个过程。文档提到这将产生开销,因为即使客户端只进行了一次API调用,也可能需要为每个过程调用再次创建上下文。
因此,与示例代码不同的是:
你 * 应该 * 做这样的事情:
在该示例中,用于获取所需信息的逻辑(在本例中仅为'hi',但也可能是数据库调用)被抽象化,以便在每种情况下仍调用相同的代码,但没有额外的过程调用。