微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Spring Boot GraphQL Kickstart的现成标量类型?找不到用于对象字段的类型名

如何解决如何使用Spring Boot GraphQL Kickstart的现成标量类型?找不到用于对象字段的类型名

根据此博客https://medium.com/supercharges-mobile-product-guide/graphql-server-using-spring-boot-part-ii-scalars-31505fe90c4c除了标准的GraphQL模式类型外,它们还捆绑在spring boot graphql kickstart的依赖项中:

scalar BigDecimal
scalar BigInteger
scalar Byte
scalar Char
scalar Short
scalar Long

我需要Long,因此将scalar Long添加到了我的模式文件。 我也将其添加查询返回类型:


type CharacterOutput {
    id: ID!,name: String!
    age: Int!
    bloodline: BloodlineOutput
    villageId: ID!
    timestamp: Long!
}

但是我在这里如何在数据类中用作类型?

data class CharacterOutput(
    val id: String,val name: String,val age: Short,val bloodline: BloodlineOutput?,val villageId: String?,val timestamp: // << ?
)

有人可以告诉我在这里用什么吗?

解决方法

根据graphql-java-kickstart引发的异常,问题在于graphql-java-kickstart没有注册标量'Long'。

您可以按照本文档https://github.com/graphql-java-kickstart/graphql-spring-boot/wiki/Creating-a-custom-scalar-type创建自定义标量,或仅将Option Explicit Sub UpdateBookmarksFromExcelFile() Dim oXL As Excel.Application Dim oWB As Excel.Workbook Dim oSheet As Excel.Worksheet Dim oRng As Excel.Range Dim ExcelWasNotRunning As Boolean Dim WorkbookToWorkOn As String,msg1 As String Dim bkmk As String,txt As String,doc As Document,i As Long,j As Long,k As Long WorkbookToWorkOn = FileOpenDialogBox 'specify the workbook to work on On Error Resume Next Set oXL = GetObject(,"Excel.Application") On Error GoTo 0 If oXL Is Nothing Then ExcelWasNotRunning = True Set oXL = New Excel.Application End If On Error GoTo Err_Handler Set doc = ActiveDocument Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn) For Each oSheet In oWB.Worksheets If oSheet.Name = "Sheet1" Then For i = 1 To oSheet.Cells(oSheet.Rows.Count,"A").End(xlUp).Row bkmk = oSheet.Range("A" & i).Value 'value of the bookmark txt = oSheet.Range("B" & i).Value If Len(bkmk) > 0 Then If UpdateBookmark(doc,bkmk,txt) Then j = j + 1 'counts number of bookmarks updated Else k = k + 1 'gives total of bookmarks not found End If End If Next i End If Next oSheet oWB.Close False If ExcelWasNotRunning Then oXL.Quit MsgBox j & " Bookmarks updated," & k & " Bookmarks not found." Exit Sub Err_Handler: MsgBox WorkbookToWorkOn & " caused a problem. " & vbNewLine & Err.Description,vbCritical,_ "Error: " & Err.Number If ExcelWasNotRunning Then oXL.Quit End Sub 'replace any text in a bookmark in doc with the supplied text: return True if successful Function UpdateBookmark(doc As Document,BookmarkToUpdate As String,TextToUse As String) As Boolean Dim BMRange As Range If doc.Bookmarks.Exists(BookmarkToUpdate) Then Set BMRange = doc.Bookmarks(BookmarkToUpdate).Range BMRange.Text = TextToUse doc.Bookmarks.Add BookmarkToUpdate,BMRange UpdateBookmark = True Else UpdateBookmark = False 'no update End If End Function GraphQLScalarType连接到模式解析器中。

要创建自定义标量,您需要做两件事:

  1. GraphQLScalarType的实例,该实例将把graphql输入强制转换为Java表示形式。感谢graphql-java,这已经为Long实现了!我们将使用Scalars.GraphQLLong

  2. SchemaParser bean:graphql-java-kickstart使用默认的SchemaParser,可以将其重写以指定模式解析器选项,模式文件等。

    Scalars.GraphQLLong
,

配置 SchemaParser 的另一种方法是将您想要的标量注册为它们自己的 bean。

@Bean
public GraphQLScalarType longType() {
    return Scalars.GraphQLLong;
}

请注意,Java 特定的标量目前已被弃用,并说明它们将来会被移至单独的库中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。