我想知道为什么 providers 部分有一个 Spread Operator

I want to know why there is a Spread Operator in the providers section

这是我的代码。

database.providers.ts

import { createConnection } from 'typeorm';

export const databaseProviders = [
  {
    provide: 'DATABASE_CONNECTION',
    useFactory: async () => await createConnection({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [
          __dirname + '/../**/*.entity{.ts,.js}',
      ],
      synchronize: true,
    }),
  },
];

database.module.ts

import { Module } from '@nestjs/common';
import { databaseProviders } from './database.providers';

@Module({
  providers: [...databaseProviders],
  exports: [...databaseProviders],
})
export class DatabaseModule {}

在database.module.ts中只使用[databaseProviders]会出现哪些错误?

databaseProviders 已经是一个数组,只有一个元素,但仍然是一个数组。 providersexports 期望获得一系列提供程序(自定义或其他),因此如果您要执行 providers: databaseProvidersproviders: [ ...databaseProviders ] 你很好,因为这些是两个单深度阵列。但是,如果你这样做 providers: [databaseProviders] 这是一个二维数组,或者数组的数组,Nest 不处理,所以你需要使用 spread 运算符(...)来将数组从 databaseProviders 转换为 providersexports 数组

的单独元素