不工作的代码只是为了说明我想要实现的目标
一些连接文件
import { ConnectionManager } from 'typeorm';
const c = new ConnectionManager();
// user ormconfig.conf file
export const connection = c.createAndConnect();
Run Code Online (Sandbox Code Playgroud)
在某些模型中使用
@Entity()
@Table("annual_incomes")
export class AnnualIncome
{
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 75 })
variant: string;
@Column("int")
sort: number;
@Column()
is_active: boolean;
}
Run Code Online (Sandbox Code Playgroud)
稍后在代码中的某个地方,我希望与所有类似的方法建立连接
import { connection } from 'someconnection';
import { AnnualIncome } from 'entities';
// some code here
api.get('/incomes', async(ctx) => {
ctx.body = await connection.getRepository(AnnualIncome).find();
});
Run Code Online (Sandbox Code Playgroud)
通常我从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();
}
});
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于定义,tsc并没有抱怨未使用的方法.我想避免一个额外的定义,connection.then()并connection明确在<Connection>类型中定义的所有方法
谢谢.
ple*_*ock 13
只需使用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();
});
Run Code Online (Sandbox Code Playgroud)
此外,您可以简单地使用getRepository从任何地方也可以使用的方法:
import { AnnualIncome } from 'entities';
import { getRepository } from 'typeorm';
// some code here
api.get('/incomes', async (ctx) => {
ctx.body = await getRepository(AnnualIncome).find();
});
Run Code Online (Sandbox Code Playgroud)