不用工作代码只是为了说明我想要实现的目标
某些连接文件
import { ConnectionManager } from 'typeorm';
const c = new ConnectionManager();
// user ormconfig.conf file
export const connection = c.createAndConnect();
在某些模型中使用
@Entity()
@Table("annual_incomes")
export class AnnualIncome
{
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 75 })
variant: string;
@Column("int")
sort: number;
@Column()
is_active: boolean;
}
稍后在代码中的某个地方,我希望与所有类似的方法建立连接
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
并未抱怨未使用的方法。
我希望避免额外定义connection.then()
,并使用connection
类型
<Connection>
感谢。
答案 0 :(得分:10)
只需使用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
方法,也可以从任何地方使用:
import { AnnualIncome } from 'entities';
import { getRepository } from 'typeorm';
// some code here
api.get('/incomes', async (ctx) => {
ctx.body = await getRepository(AnnualIncome).find();
});