我将typeorm与TypeGraphQl结合使用。我想知道TypeGraphQl提供的SQL查询结果是什么?
例如,如果我有一个包含很多列的User Table,而我有一个简单的解析器。
@Resolver()
class UserResolver {
@Query(() => [User])
async user(): Promise<User[]> {
return await User.find();
}
}在客户端,他们请求用户数据,如下所示
{
user{
id,
name
}
}SQL将对数据库运行什么。
是这个吗?
"SELECT * FROM USER";或者是这个
"SELECT id, name FROM USER";如果它是运行第一个SQL,那么为什么我首先需要使用GraphQl?休息不是更好吗。
或者,如何根据用户请求创建动态SQL?
发布于 2021-10-27 15:54:32
GraphQl用于动态字段请求例如,假设您的数据库中有一个包含Id_User、电子邮件、姓名的用户表,而您只想查询Id_User
因此,您的查询如下所示
{
GetUser{
id
}
} 如果在解析器中执行以下操作:
@Resolver()
class UserResolver {
@Query(() => [User])
async GetUser(): Promise<User[]> {
return await User.find();
}
}Typeorm whit生成如下查询:
"SELECT Id_User, Name, Email FROM USER"即使你没有选择所有的数据并且你的查询只有一个字段,typeorm也会选择所有的字段。
如果您想要避免这种情况,并且只想使用“Info field”发出请求,那么您需要知道解析器返回哪个字段,而且在this中使用@Info修饰符时,您需要执行很多操作
此外,typeorm还具有一个查询构建器功能,可以帮助您创建动态SQL语句
为什么?REST更好?,实际上REST您无法选择您想要的字段,当您有web、应用程序、桌面应用程序,并且您需要为所有平台创建GraphQl应用程序接口时,GraphQlwas针对这些问题而设计,因为使用像这样的GetUser的一个端点,您可以动态地选择字段,而不需要像rest API那样的两个或更多端点
https://stackoverflow.com/questions/69055522
复制相似问题