首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeGraphQl是否自动格式化SQL查询?

TypeGraphQl是否自动格式化SQL查询?
EN

Stack Overflow用户
提问于 2021-09-04 13:00:35
回答 1查看 25关注 0票数 0

我将typeorm与TypeGraphQl结合使用。我想知道TypeGraphQl提供的SQL查询结果是什么?

例如,如果我有一个包含很多列的User Table,而我有一个简单的解析器。

代码语言:javascript
复制
@Resolver()
class UserResolver {
  @Query(() => [User])
  async user(): Promise<User[]> {
    return await User.find();
  }
}

在客户端,他们请求用户数据,如下所示

代码语言:javascript
复制
{
  user{
    id,
    name
  }
}

SQL将对数据库运行什么。

是这个吗?

代码语言:javascript
复制
"SELECT * FROM USER";

或者是这个

代码语言:javascript
复制
"SELECT id, name FROM USER";

如果它是运行第一个SQL,那么为什么我首先需要使用GraphQl?休息不是更好吗。

或者,如何根据用户请求创建动态SQL?

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 15:54:32

GraphQl用于动态字段请求例如,假设您的数据库中有一个包含Id_User、电子邮件、姓名的用户表,而您只想查询Id_User

因此,您的查询如下所示

代码语言:javascript
复制
 {
  GetUser{
    id
  }
} 

如果在解析器中执行以下操作:

代码语言:javascript
复制
@Resolver()
class UserResolver {
  @Query(() => [User])
  async GetUser(): Promise<User[]> {
    return await User.find();
  }
}

Typeorm whit生成如下查询:

代码语言:javascript
复制
"SELECT Id_User, Name, Email FROM USER"

即使你没有选择所有的数据并且你的查询只有一个字段,typeorm也会选择所有的字段。

如果您想要避免这种情况,并且只想使用“Info field”发出请求,那么您需要知道解析器返回哪个字段,而且在this中使用@Info修饰符时,您需要执行很多操作

此外,typeorm还具有一个查询构建器功能,可以帮助您创建动态SQL语句

为什么?REST更好?,实际上REST您无法选择您想要的字段,当您有web、应用程序、桌面应用程序,并且您需要为所有平台创建GraphQl应用程序接口时,GraphQlwas针对这些问题而设计,因为使用像这样的GetUser的一个端点,您可以动态地选择字段,而不需要像rest API那样的两个或更多端点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69055522

复制
相关文章

相似问题

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