2017-12-18 3 views
0

Ist es möglich, Verbindungsklasse wie provide wie hier zu verwenden?Typorm Connection Provider als Verbindungsklasse

import { Connection, createConnection } from 'typeorm'; 

export const databaseProviders = [{ 
    provide: Connection, 
    useFactory: async() => await createConnection({ 
    type: 'postgres', 
    host: 'localhost', 
    port: 5432, 
    username: 'postgres', 
    password: 'postgres', 
    database: 'testo', 
    entities: [ 
     __dirname + '/../**/*.entity{.ts,.js}', 
    ], 
    logging: true, 
    synchronize: true, 
    }), 
}]; 

Um Importe funktionieren wie:

constructor(
    private connection: Connection, 
) { 
    this.repository = connection.getRepository(Project); 
} 

In diesem Fall nestjs keine Abhängigkeit gibt. Ich schätze, das Problem ist in typeorm, es ist zu plain es5 Funktion kompiliert. Aber vielleicht gibt es dafür eine Lösung?

repository to reproduce

UPDATE:

fand ich akzeptable Lösung nestjs typeorm module, aber nicht verstehen, warum meine Connection Klasse nicht gearbeitet wird, aber es funktioniert gut mit Streichern. Hope @ kamil-myśliwiec wird helfen zu verstehen.

modules: [ 
    TypeOrmModule.forRoot(
     [ 
     Build, 
     Project, 
     ], 
     { 
     type: 'postgres', 
     host: 'localhost', 
     port: 5432, 
     username: 'postgres', 
     password: 'postgres', 
     database: 'testo', 
     entities: [ 
      Build, 
     ], 
     logging: true, 
     synchronize: true, 
     }), 
    ], 
    // And the n inject like this by entity name 
    @InjectRepository(Build) private repository: Repository<Build>, 

Antwort

1

Ja, das ist völlig in Ordnung. Könnten Sie mehr Code teilen?

+0

Hinzufügen Repo in der Frage. Wenn es in Ordnung ist, sollten wir die Nest-Dokumentation mit der 'Connection'-Klasse umschreiben :) Auch' autoSchemaSync' wurde in 'typeform' in' synchronize' geändert. –

+0

Eigentlich bin ich gerade dabei :) –

+0

Hi, irgendwelche Neuigkeiten dazu? Habe ich in meinem Repo etwas falsch gemacht? –

Verwandte Themen