Skip to main content

共享模型

warning

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

在项目的后端使用 TypeScript 的最大优势之一是可以通过使用一个通用的 TypeScript 包, 在基于 TypeScript 的前端应用程序中重用相同的模型。

但是存在一个问题:使用代码优先方法创建的模型使用了与 GraphQL 相关的装饰器。 这些装饰器在前端是无关紧要的,会对性能产生负面影响。

使用模型 shim

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

例如,对于 webpack,可以通过以下方式解决此问题:

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

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