当前位置: 首页 > 知识库问答 >
问题:

GraphQL SPQR获取服务器端的所有字段

甄志
2023-03-14

我是Spring Boot的新手,我刚刚开始使用graph ql-spqr进行Spring Boot,因为它允许Java项目轻松无融资创业。

但是,根据我的理解,GraphQL基本上允许从数据库中获取选定的字段。根据示例,我已经看到,graph ql-spqr库中的这种类型的选择发生在客户端。有没有办法同时进行客户端和服务器端的选择以加快查询速度?

我已经研究了GraphQL的EntityGraph示例,但它们大多用于涉及连接的复杂查询。然而,对于像findAll()、findById()等简单查询,什么都不存在。

我想使用findAll(),服务器只获取客户端请求的字段。我该怎么做?


共有1个答案

丰胤运
2023-03-14

评论中所说的是正确的:GraphQL(因此SPQR,因为它只是一个连接模式的工具)不知道任何关于SQL、数据库、连接或任何其他的东西。这是一个通信协议,其余的由你决定。对于您的情况,您必须将子选择注入解析器并将其传递给SQL。在最简单的情况下,它可以如下所示(在伪代码中):

public List<Book> books(@GraphQLEnvironment Set<String> fields) {
    //pass the requested field names further
    return database.query("SELECT " + fields + " FROM book");
}

如果需要完整的上下文,可以使用相同的注释注入ResolutionEnvironment。

 类似资料:
  • 我有以下电话: 和以下路线: 我试图在'//get Hello'上获取名为'Hello'的参数。我尝试使用req.params,但它返回{}。 调用是否有问题,或者如何获取hello参数?提前谢谢

  • 问题内容: 我可以 在运行时 获取所有已注册指令,服务,控制器等的列表。。。? 问题答案: 您可以获取每个模块的提供者列表(即服务/指令/控制器/工厂/等),尽管该列表是一种含糊不清的形式。 说您有以下几点: 然后,变量将包含一个名为的属性,该属性将包含该模块中所有提供程序的数组。该会是这个样子: 因此,您可以针对其中包含的每个提供程序进行搜索。 但这仅包含该特定模块的提供程序列表。如果要获取所有

  • 客户端向服务器发送消息1(客户端可以是.NET或java应用程序) 服务器将message2作为对Message1的响应发送回客户端 我的服务器有一个问题,它无法正确读取message1,除非我使用以下不适当的解决方案之一: 1)使用缓冲区仅为1字节的MemoryStream(工作但速度慢): 5)用其长度为message1添加前缀(可以工作,但需要客户机向消息添加额外的字节,这将不适用于现有的j

  • 问题内容: 您经常会看到Node的示例hello world代码,该代码创建Http Server,开始侦听端口,然后执行以下操作: 但理想情况下,您希望这样做: 如何在调用前不将服务器号存储在变量中的情况下检索服务器当前正在侦听的端口? 我之前已经看过这件事,但是在Node文档中找不到。也许这是表达的特定内容? 问题答案: Express 4.x答案: Express 4.x(根据下面的Tien

  • ap.getBLEDeviceServices(OPTION | deviceId, CALLBACK) 获取蓝牙设备所有 service(服务)。 OPTION 参数说明 名称 类型 必填 描述 deviceId String 是 蓝牙设备 id,参考 device 对象 CALLBACK 参数说明 名称 类型 描述 services Array service 对象,详见下表 service对

  • 问题内容: 使用以下选项启动Java应用程序时: Java使用临时端口,这对于避免冲突非常有用。 是否可以从应用程序内部以编程方式获取实际端口(或连接URL)? 问题答案: 这将打印如下网址