共享模型 Sharing models

导读

警告

本章仅适用于代码优先方法。

使用 Typescript 作为项目后端的最大优势之一是能够使用通用 Typescript 包在基于 Typescript 的前端应用程序中重用相同的模型。

但有一个问题:使用代码优先方法创建的模型大量使用 GraphQL 相关的装饰器进行装饰。这些装饰器与前端无关,会对性能产生负面影响。

使用模型垫片

为了解决这个问题,NestJS 提供了一个垫片,允许您使用 webpack(或类似)配置将原始装饰器替换为惰性代码。 要使用此垫片,请在 @nestjs/graphql 包和垫片之间配置一个别名。

例如,对于 webpack,可以这样解决:

js
// see: https://webpack.js.org/configuration/resolve/
resolve: {
  alias: {
      "@nestjs/graphql": path.resolve(__dirname, "../node_modules/@nestjs/graphql/dist/extra/graphql-model-shim")
  }
}
提示

TypeORM 包有一个类似的 shim,可以在 此处 找到。