2

我正在使用 graphql、nexus-plugin-prisma、prisma 来使用ReScript构建后端应用程序。我面临的问题是有些列以大写字母开头,我想使用records而不是objects为此类模式设置类型。(利用模式匹配实用程序)

但是 ReScript 会阻止大写字母作为记录键的第一个字符出现。有什么办法可以让我以某种方式摆脱这个问题?任何帮助,将不胜感激。

4

1 回答 1

3

通常在处理 graphQL 时,规避此问题的最佳方法是利用 graphQL 别名功能:

fragment Foo on foo {
  uncapitalizedAlias: CapitalizedName
}

编辑:我不知道您尝试使用的记录是预先定义的还是由您的 GraphQL 客户端生成的,但是当您想绑定到具有大写名称的 JS 对象时,您还有其他更通用的解决方案:

  1. 您可以使用bs.as更改字段的名称(在 Ocaml/Reason 和 Rescript 语法中都有效):
type myGQLrecord = {
  @bs.as("CapitalizedName")
  uncapitalizedName: string,
}

  1. 或者,由于 rescript 语法的此功能(也适用于值标识符),您可以直接为您的字段使用任何您想要的标识符名称:
type myGQLrecord = {
  \"CapitalizedName": string
}

在我看来,它虽然使用起来有点麻烦。

于 2020-08-31T10:33:07.890 回答