如何解决如何使用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连接到模式解析器中。
要创建自定义标量,您需要做两件事:
-
GraphQLScalarType的实例,该实例将把graphql输入强制转换为Java表示形式。感谢graphql-java,这已经为Long实现了!我们将使用
Scalars.GraphQLLong
。 -
SchemaParser bean:graphql-java-kickstart使用默认的SchemaParser,可以将其重写以指定模式解析器选项,模式文件等。
Scalars.GraphQLLong
配置 SchemaParser
的另一种方法是将您想要的标量注册为它们自己的 bean。
@Bean
public GraphQLScalarType longType() {
return Scalars.GraphQLLong;
}
请注意,Java 特定的标量目前已被弃用,并说明它们将来会被移至单独的库中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。