如何处理 GraphQL Schema 定义中的连字符

How to handle hyphens in GraphQL Schema definitions

我的猫鼬架构如下

var ImageFormats = new Schema({
     svg        : String,
     png-xlarge : String,
     png-small  : String
});

当我将其转换为 GraphQL 模式时,这就是我尝试的

export var GQImageFormatsType: ObjectType = new ObjectType({
     name: 'ImageFormats',

     fields: {
          svg        : { type: GraphQLString },
         'png-xlarge': { type: GraphQLString },
         'png-small' : { type: GraphQLString }
 }
});

GraphQL Returns 出现以下错误:Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "png-xlarge" does not.

如果我尝试在我的 Mongoose 模型之后对 GraphQL 建模,我该如何协调这些字段?有没有办法让我创建一个别名?

(我在 graffiti 和 Whosebug 论坛上搜索过这个但是没有找到类似的问题)

GraphQL Returns the following error: Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "png-xlarge" does not.

GraphQL 抱怨字段名称 'png-xlarge' 无效。错误消息中的正则表达式表示第一个字符可以是字母,不分大小写或下划线。其余字符也可以有数字。因此,很明显连字符 - 和单引号 ' 都不能作为字段名。这些规则基本上遵循您在几乎所有编程语言中都能找到的变量命名规则。您可以查看 GraphQL naming rules.

If I am trying to model the GraphQL after my Mongoose model, how can I reconcile the fields? Is there a way for me to create an alias?

借助resolve函数,您可以按如下方式进行:

pngXLarge: { 
    type: GraphQLString,
    resolve: (imageFormats) => {
        // get the value `xlarge` from the passed mongoose object 'imageFormats'
        const xlarge = imageFormats['png-xlarge'];
        return xlarge;
    },
},