ค้นหาเว็บไซต์

javascript - วิธีการทำงานกับการเชื่อมต่อฐานข้อมูล sequelize มากกว่าหนึ่งใน NestJS


ฉันกำลังใช้ตัวอย่างจากเอกสารของ NestJS เกี่ยวกับวิธีการตั้งค่าการเชื่อมต่อฐานข้อมูล Sequelize ฉันสามารถตั้งค่าการเชื่อมต่อไปยังฐานข้อมูลมากกว่าสองฐานโดยใช้ Sequelize และ TypeScript สำหรับ NestJS ได้อย่างไร

คำตอบ #1

คุณสามารถตั้งค่าการเชื่อมต่อ Sequelize หลายตัวใน databaseProviders ของคุณได้:

export const databaseProviders = [
  {
    provide: 'SequelizeCatToken',
    useFactory: async () => {
      const sequelize = new Sequelize({
        dialect: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'catroot',
        password: 'catpassword',
        database: 'cats',
      });
      sequelize.addModels([Cat]);
      await sequelize.sync();
      return sequelize;
    },
  },  
  {
    provide: 'SequelizeDogToken',
    useFactory: async () => {
      const sequelize = new Sequelize({
        dialect: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'doogroot',
        password: 'dogpassword',
        database: 'dogs',
      });
      sequelize.addModels([Dog]);
      await sequelize.sync();
      return sequelize;
    },
  },
];

คำตอบ #2

คุณต้องใช้ name สำหรับการเชื่อมต่อ ซึ่งเป็นข้อบังคับ

const defaultOptions = {
  dialect: 'postgres',
  port: 5432,
  username: 'user',
  password: 'password',
  database: 'db',
  synchronize: true,
};

@Module({
  imports: [
    SequelizeModule.forRoot({
      ...defaultOptions,
      host: 'user_db_host',
      models: [User],
    }),
    SequelizeModule.forRoot({
      ...defaultOptions,
      name: 'albumsConnection',
      host: 'album_db_host',
      models: [Album],
    }),
  ],
})
export class AppModule {}

นี่คือเอกสารใน Nest