PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

TypeORM ne prend pas en charge le paramètre de base de données sur le décorateur d'entité

Il s'agit d'un problème de configuration. Je l'ai résolu comme ceci :

  1. Modifier le tableau entities ainsi chaque connexion/base de données a son propre dossier avec des fichiers d'entité et nommez l'entité que vous utilisez le plus comme 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. Créez des fichiers d'entité pour chaque base de données dans son dossier respectif :
    • src/db1/entity/Fruit.ts> table en db1
    • src/db2/entity/Vegetables.ts> table en db2

Avec "synchronize": true chaque table sera créée automatiquement dans la bonne base de données

  1. Accéder aux données dans les tables :
    • Pour le default connexion ::
import { Fruit} from 'src/db1/entity/Fruit.ts'
  fruits() {
    return Fruit.find()
  }
  • Pour la connexion non par défaut :
import { getRepository } from 'typeorm'
import { Vegetable} from 'src/db2/entity/Vegetable.ts'
  vegetables() {
      return async () => await getRepository(Vegetable).find()
  }

ou

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

J'espère que cela aidera quelqu'un d'autre aux prises avec les mêmes problèmes que vous et moi.