如何在nest.js中定义辅助函数和常量?

kir*_*403 8 dependency-injection helper node.js typescript nestjs

我正在学习 Nest.js 并使用它创建一个 api。然而,我陷入了问题之一,即定义常量和辅助函数。

与所有 API 一样,我有一些具有分页功能的 API,我想在全局级别为所有模块定义默认页面大小。然而,此时我很困惑应该走什么路。对于配置,我创建了一个AppConfigModule提供 4 个环境变量的配置:

在此输入图像描述

// app-config.service.ts

import { Injectable } from '@nestjs/common'
import { ConfigService } from '@nestjs/config'

@Injectable()
export class AppConfigService {
  constructor(private configService: ConfigService) {}

  get DB_HOST(): string {
    return this.configService.get<string>('DATABASE_HOST')
  }

  get DB_PORT(): string {
    return this.configService.get<string>('DATABASE_PORT')
  }

  get DB_NAME(): string {
    return this.configService.get<string>('DATABASE_NAME')
  }

  get DB_MONGO(): string {
    return `mongodb://${this.DB_HOST}:${this.DB_PORT}/${this.DB_NAME}`
  }
}

Run Code Online (Sandbox Code Playgroud)

现在,当我必须使用不依赖于环境的常量(例如 DEFAULT_PAGE_SIZE)时,我应该在哪里定义它?

  1. AppConfigService和with在同一个班级static readonly DEFAULT_PAGE_SIZE = 10
  2. 创建一个提供公共变量的新服务AppConstantsService并将该服务注入到我们需要使用它的构造函数中?
  3. 在一些帮助程序类中创建一个 app-constats.ts 文件,其中包含以下详细信息:export class AppConstants { static readonly DEFAULT_PAGINATION = 10 }

当我考虑定义辅助函数时遇到同样的问题。有多种方法,我无法为 Nest js 找到更好的清晰方法。途径可以包括:

  1. 创建helpers.ts导出静态函数的文件:export const getDate = () => logger.log('Hi')

  2. 使用新模块创建AppUtilService并在需要使用它时将其注入构造函数中?

我对 Nest.js 架构的方法有点困惑。有人可以帮忙吗?

提前致谢。

Jua*_*bal 7

是的,您可以将常量作为简单属性添加到类中,这将帮助您将所有常量保留在一个位置,关于辅助函数,我建议您创建一个 utils 文件夹并为每组函数添加一个模块。

IE

根/ utils / 日期 - > 日期.module.ts , 日期.service.ts

在dates.service.ts中,您可以添加与日期操作相关的每个辅助函数,请记住在dates.module.ts上导出提供程序