2017-02-12 156 views
0

不工作的代碼只是爲了說明我嘗試使用一些模型TypeOrm - 如何將連接用作具有類型的獨立對象?

@Entity() 
@Table("annual_incomes") 
export class AnnualIncome 
{ 
    @PrimaryGeneratedColumn() 
    id: number; 

    @Column({ length: 75 }) 
    variant: string; 

    @Column("int") 
    sort: number; 

    @Column() 
    is_active: boolean; 
} 

後某處的代碼我想連接,實現

有些連接文件

import { ConnectionManager } from 'typeorm'; 

const c = new ConnectionManager(); 
// user ormconfig.conf file 
export const connection = c.createAndConnect(); 

用所有方法類似的東西

import { connection } from 'someconnection'; 
import { AnnualIncome } from 'entities'; 

// some code here 

api.get('/incomes', async(ctx) => { 
    ctx.body = await connection.getRepository(AnnualIncome).find(); 
}); 

通常我從tsc得到一個錯誤.getRepository()方法未在connection中找到。但是,如果我做這樣的事情:

import { connection } from 'someconnection'; 
import { AnnualIncome } from 'entities'; 

// some code here 

api.get('/incomes', async(ctx) => { 
    ctx.body = await connection.then(async connection => { 
     return await connection.getRepository(AnnualIncome).find(); 
    } 
}); 

上面的代碼使用的定義和tsc不抱怨unexisting方法。 我想,以避免額外的定義connection.then()並獲得純connection<Connection>

感謝定義的所有方法。

回答

3

只需使用createConnection方法在引導應用程序時創建連接。稍後,您可以使用getConnection()方法在任何地方訪問您的網絡連接:

import { AnnualIncome } from 'entities'; 
import { createConnection, getConnection } from 'typeorm'; 

// somewhere in your app, better where you bootstrap express and other things 
createConnection(); // read config from ormconfig.json or pass them here 

// some code here 

api.get('/incomes', async(ctx) => { 
    ctx.body = await getConnection().getRepository(AnnualIncome).find(); 
}); 

你也可以簡單的使用方法getRepository也avalible從任何地方:

import { AnnualIncome } from 'entities'; 
import { getRepository } from 'typeorm'; 

// some code here 

api.get('/incomes', async (ctx) => { 
    ctx.body = await getRepository(AnnualIncome).find(); 
}); 
+0

感謝。我想要注意的是,如果只使用getRepository(),我必須設置連接名稱await getRepository(AnnualIncome,'default')' – VaL

+0

實際上,您可以省略連接名稱參數,因爲默認情況下它是'default'。你應該只在你的名字使用特定連接名稱時使用 – pleerock

+0

定義或版本'https:// github.com/typeorm/typeorm/blob/master/src/index.ts#L259'之間可能會發生衝突,因爲你的示例沒有工作在我的版本'0.0.8'在我的NPM包我沒有這一行'https:// github.com/typeorm/typeorm/blob/master/src/index.ts#L269' – VaL

相關問題