如何在NestJs中将自定义标量导入.graphql文件?

时间:2019-01-19 03:59:04

标签: typescript graphql nestjs

多亏了@ nestjs / graphql软件包,我可以在应用程序的每个模块中创建单独的.graphql文件,Nestjs系统将它们全部收集起来,并将它们很好地介绍给Apolo服务器,但是当我尝试制作自定义标量时,问题就来了,我按照他的教程所说的那样做:

https://docs.nestjs.com/graphql/scalars

但是我找不到将它们导入.graphql文件的方法,因此可以在该文件中使用它。并且由于文件是.graphql,因此导入无法正常进行。 您知道如何导入自定义标量以在.graphql文件中使用吗? 他们可以使用以下示例作为示例:

https://github.com/nestjs/nest/tree/master/sample/12-graphql-apollo

正如您在示例中看到的那样,他们发现他们有一个名为cats的模块,在模块内部有cats.resolvers.ts和cats.graphql;。另一方面,它们定义了date.scalar.ts。 使用此示例的问题:

如何在cats.resolvers.ts的属性中使用DateScalar?

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,并通过以下方式解决了该问题:

  • 首先,我制作了通用模块,将DateScalar设置为提供程序并导出它:


    import { Module } from '@nestjs/common';
    import { DateScalar } from './scalars/date.scalar';

    @Module({
        providers: [DateScalar],
        exports: [DateScalar]
    })
    export class CommonModule {}

  • 稍后,我将通用模块导入了cats模块,以便整个Cats模块中都可以使用DateScalar。

  • 最后我在cats.graphql内部建立了以下代码行:



    scalar Date

    type Cat {
      id: Int
      name: String
      age: Int
      birthday: Date
    }

请注意,cats.graphql文件中的Scale Date值必须与date.scalar.ts文件中@Scalar ('Date')中设置的值匹配