如何摆脱记录构造的非大写键值?
How to get away from Non-capitalized key value for Record construction?
我正在使用 graphql、nexus-plugin-prisma、prisma 使用 ReScript 构建后端应用程序。我面临的问题是有些列以大写字母开头,我想使用 records 而不是 objects 为此类模式设置类型。 (使用模式匹配实用程序)
但是 ReScript 会阻止大写字母作为记录键的第一个字符出现。有什么办法可以解决这个问题吗?任何帮助将不胜感激。
通常在处理 graphQL 时,规避此问题的最佳方法是利用 graphQL 别名功能:
fragment Foo on foo {
uncapitalizedAlias: CapitalizedName
}
编辑:我不知道您尝试使用的记录是预先定义的还是由您的 GraphQL 客户端生成的,但是当您想要绑定到具有大写名称的 JS 对象时,您还有其他更通用的解决方案:
- 您可以使用
bs.as
更改字段名称(在 Ocaml/Reason 和 Rescript 语法中均有效):
type myGQLrecord = {
@bs.as("CapitalizedName")
uncapitalizedName: string,
}
- 或者你可以直接使用你想要的任何标识符名称,这要归功于 rescript 语法的这个特性(也适用于值标识符):
type myGQLrecord = {
\"CapitalizedName": string
}
在我看来,它使用起来有点麻烦。
我正在使用 graphql、nexus-plugin-prisma、prisma 使用 ReScript 构建后端应用程序。我面临的问题是有些列以大写字母开头,我想使用 records 而不是 objects 为此类模式设置类型。 (使用模式匹配实用程序)
但是 ReScript 会阻止大写字母作为记录键的第一个字符出现。有什么办法可以解决这个问题吗?任何帮助将不胜感激。
通常在处理 graphQL 时,规避此问题的最佳方法是利用 graphQL 别名功能:
fragment Foo on foo {
uncapitalizedAlias: CapitalizedName
}
编辑:我不知道您尝试使用的记录是预先定义的还是由您的 GraphQL 客户端生成的,但是当您想要绑定到具有大写名称的 JS 对象时,您还有其他更通用的解决方案:
- 您可以使用
bs.as
更改字段名称(在 Ocaml/Reason 和 Rescript 语法中均有效):
type myGQLrecord = {
@bs.as("CapitalizedName")
uncapitalizedName: string,
}
- 或者你可以直接使用你想要的任何标识符名称,这要归功于 rescript 语法的这个特性(也适用于值标识符):
type myGQLrecord = {
\"CapitalizedName": string
}
在我看来,它使用起来有点麻烦。