如何在Nest.js代码first appraoch中使用graphql类型的json标量

如何在Nest.js代码first appraoch中使用graphql类型的json标量,graphql,nestjs,Graphql,Nestjs,我已经安装了graphql类型json和其他类型。 如何在代码优先的方法中使用它,在下面的示例中,JSONObject是标量 import {Field, Int, InputType} from 'type-graphql'; import {Direction, MessageType} from '../interfaces/message.interface'; @InputType() export class MessageInput { @Field() read

我已经安装了graphql类型json和其他类型。 如何在代码优先的方法中使用它,在下面的示例中,JSONObject是标量

import {Field, Int, InputType} from 'type-graphql';
import {Direction, MessageType} from '../interfaces/message.interface';

@InputType()
export class MessageInput {
    @Field()
    readonly to: string;
    @Field()
    readonly type: MessageType;
    @Field()
    readonly direction: Direction;
    @Field()
    readonly body: **JSONObject**;
}

你可以用

创建@Scalar类型你可以用

创建@Scalar类型我找到了这个方法,它对我很有用。可能不是代码优先的方法,但我想在您弄明白之前,它已经足够了:

import { Field, ObjectType } from 'type-graphql';
import JSON from 'graphql-type-json';

@ObjectType()
export class YourClass {
  @Field(() => JSON)
  myProperty: any;
}

我找到了这个方法,它对我很有效。可能不是代码优先的方法,但我想在您弄明白之前,它已经足够了:

import { Field, ObjectType } from 'type-graphql';
import JSON from 'graphql-type-json';

@ObjectType()
export class YourClass {
  @Field(() => JSON)
  myProperty: any;
}

它不是非常优雅,但我创建了一个@Scalar修饰类来包装GraphQLJSON对象:

然后,我将JsonScalar添加到模块中的解析器部分

您可以在带有@Queryreturns=>Object的解析器中使用它,您需要指定嵌套类型的其他位置也可以使用它,它只是一个Object


Nestjs真的应该允许我们按对象而不是类添加标量,令人惊讶的是这不是一件事。我从schema first切换到code first,遇到了这个问题。

这不是非常优雅,但我创建了一个@Scalar修饰类来包装GraphQLJSON对象:

然后,我将JsonScalar添加到模块中的解析器部分

您可以在带有@Queryreturns=>Object的解析器中使用它,您需要指定嵌套类型的其他位置也可以使用它,它只是一个Object


Nestjs真的应该允许我们按对象而不是类添加标量,令人惊讶的是这不是一件事。我从schema first切换到code first,遇到了这个问题。

我真的不知道如何处理JSON,你能提供一个例子吗?看起来已经有一个用于在GraphQL中键入JSON的包了。否则,看起来您只需要添加一个parseValue、一个serialize和一个parseLiteral方法。Nest文档展示了如何使用日期类型。我真的不明白如何使用JSON,你能提供一个例子吗?看起来已经有一个包可以在GraphQL中使用JSON类型。否则,看起来您只需要添加一个parseValue、一个serialize和一个parseLiteral方法。嵌套文档显示了如何使用日期类型。