代码之家  ›  专栏  ›  技术社区  ›  Hemadri Dasari

Nest JS DTO和实体模型JSON不匹配问题

  •  0
  • Hemadri Dasari  · 技术社区  · 5 年前

    我需要从前端接受类型自定义JSON,我试图在NestJS中实现这一点,但我无法解决。

    我的实体模型

    import { GraphQLJSONObject } from “graphql-type-json”
    
     export class User {
       @Field(()=> GraphQLJSONObject)
       @Column({name: meta_data, type: simple-json})
        metaData: object
     }
    

    DTO等级:

     export class CreateUserDto {
      @Field()
      readonly metaData: object;
     }
    

    我总是出错

     Error: undefined type error. Make sure you are providing an explicit type for the metaData of CreateUserDto class
    

    我是Nestjs和Graphql的新手。

    0 回复  |  直到 5 年前
        1
  •  0
  •   aacotroneo    5 年前

    您对 graphql-type-json 是正确的。发生错误是因为Nest.js无法推断CreateUserDto.元数据字段的类型,您需要使用类似的注释。

    @Field(() => GraphQLJSONObject)
    readonly metaData: object;
    

    作为参考,当你也使用@Args字段时(比如在你的突变中),也会发生这样的错误

    @Mutation((returns) => MyResultSchema)
    async createUser(@Args('user', { type: () => GraphQLJSONObject }) user: object)
    

    确实有一些重复,但这是因为在转译Typescript后丢失了一些类型信息。

    推荐文章