[英]TypeOrm - How to use connection as standalone object with types?
不工作代码只是为了说明我正在尝试实现的目标
一些连接文件
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
收到一个错误,指出在connection
找不到.getRepository()
方法。 但是,如果我做这样的事情:
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
谢谢。
引导应用程序时,只需使用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
方法, getRepository
方法也可以在任何地方使用:
import { AnnualIncome } from 'entities';
import { getRepository } from 'typeorm';
// some code here
api.get('/incomes', async (ctx) => {
ctx.body = await getRepository(AnnualIncome).find();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.