PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

TypeORM unterstützt die Datenbankeinstellung auf dem Entity Decorator nicht

Dies ist ein Setup-Problem. Ich habe es so gelöst:

  1. Ändern Sie das Array entities jede Verbindung/Datenbank hat also ihren eigenen Ordner mit Entitätsdateien und nennen Sie die Entität, die Sie am häufigsten verwenden, als default :
// src/index.ts
 await createConnections([
      {
        name: 'default',
        host: 'SERVER1',
        username: 'bob',
        password: 'kiwi,
        type: 'mssql',
        database: 'db1',
        ...
       "synchronize": true,
       "entities": ["src/db1/entity/**/*.ts"],
      },
      {
        name: 'connection2,
        host: 'SERVER2',
        username: 'Mike',
        password: 'carrot',
        type: 'mssql',
        database: 'db2,
        ...
       "synchronize": true,
       "entities": ["src/db2/entity/**/*.ts"],
    ])
  1. Erstellen Sie Entitätsdateien für jede Datenbank in ihrem jeweiligen Ordner:
    • src/db1/entity/Fruit.ts> Tabelle in db1
    • src/db2/entity/Vegetables.ts> Tabelle in db2

Mit "synchronize": true jede Tabelle wird automatisch in der richtigen Datenbank erstellt

  1. Zugriff auf Daten in den Tabellen:
    • Für den default Verbindung::
import { Fruit} from 'src/db1/entity/Fruit.ts'
  fruits() {
    return Fruit.find()
  }
  • Für die nicht standardmäßige Verbindung:
import { getRepository } from 'typeorm'
import { Vegetable} from 'src/db2/entity/Vegetable.ts'
  vegetables() {
      return async () => await getRepository(Vegetable).find()
  }

oder

  async vegetables() {
    return await getRepository(vegetables, 'connection2').find()
  }

Ich hoffe, dies hilft jemand anderem, der mit denselben Problemen zu kämpfen hat wie Sie und ich.