如何摆脱记录构建的非大写键值?

问题描述

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

但是ReScript阻止大写字母出现在记录键的第一个字符中。我有什么办法可以解决这个问题?任何帮助将不胜感激。

解决方法

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

fragment Foo on foo {
  uncapitalizedAlias: CapitalizedName
}

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

  1. 您可以使用bs.as更改字段名称(同时适用于Ocaml / Reason和Rescript语法):
type myGQLrecord = {
  @bs.as("CapitalizedName")
  uncapitalizedName: string,}

  1. 或者由于脚本语法的这一功能,您可以直接在字段中使用所需的任何标识符名称(也适用于值标识符):
type myGQLrecord = {
  \"CapitalizedName": string
}

在我看来,它使用起来比较麻烦。