Typescript InversifyJS - 如何从 maint.ts 设置变量值并从控制器获取值
Typescript InversifyJS - How to set variable value from maint.ts and get the value from a controller
我是 Typescript 和 InversifyJS 的新手。我想要实现的是跨多个文件共享变量值。我在 main.ts 上设置服务器启动时的值,我试图从控制器中获取该值。我所做的是创建了一个@injectable 服务文件
service.ts
import { injectable } from 'inversify';
@injectable()
export class SetGetService {
private _client : any;
get () : any {
return this._client;
}
set (client: any) {
this._client = client;
}
}
我可以设置 main.ts 中的值,但在对其他文件调用 SetGetService 后,它未定义或为空。它似乎正在被重置或清除。
您可以在 main.ts
文件中执行以下操作:
const client = new Client();
container.bind<Client>("Client").toConstantValue(client);
然后在服务中:
import { injectable, inject } from 'inversify';
@injectable()
export class SetGetService {
@inject("Client") private _client: Client;
get () : any {
return this._client;
}
set (client: any) {
this._client = client;
}
}
如果客户端是数据库客户端并且其初始化是异步的,您可能需要使用以下内容:
// ioc_modules.ts
const asyncModule = new AsyncContainerModule(async (bind) => {
const client = await Client.getConnection();
bind<Client>("Client").toConstantValue(client);
});
// main.ts
(async () => {
await container.loadAsync(asyncModule);
})()
我是 Typescript 和 InversifyJS 的新手。我想要实现的是跨多个文件共享变量值。我在 main.ts 上设置服务器启动时的值,我试图从控制器中获取该值。我所做的是创建了一个@injectable 服务文件
service.ts
import { injectable } from 'inversify';
@injectable()
export class SetGetService {
private _client : any;
get () : any {
return this._client;
}
set (client: any) {
this._client = client;
}
}
我可以设置 main.ts 中的值,但在对其他文件调用 SetGetService 后,它未定义或为空。它似乎正在被重置或清除。
您可以在 main.ts
文件中执行以下操作:
const client = new Client();
container.bind<Client>("Client").toConstantValue(client);
然后在服务中:
import { injectable, inject } from 'inversify';
@injectable()
export class SetGetService {
@inject("Client") private _client: Client;
get () : any {
return this._client;
}
set (client: any) {
this._client = client;
}
}
如果客户端是数据库客户端并且其初始化是异步的,您可能需要使用以下内容:
// ioc_modules.ts
const asyncModule = new AsyncContainerModule(async (bind) => {
const client = await Client.getConnection();
bind<Client>("Client").toConstantValue(client);
});
// main.ts
(async () => {
await container.loadAsync(asyncModule);
})()