当前位置: 首页 > news >正文

西数网站管理助手全国最新实时大数据

西数网站管理助手,全国最新实时大数据,网站开发费用算无形资产,做经营性的网站需要注册什么在NestJS中有一种场景,在注入的时候需要将多个实现了同一个接口的service都注入到系统里,而NestJS中默认时没有这种注入,此时我们可以使用一个变通的provider来实现这一功能。 看下面例子,假定我们有一个OSService接口&#xff0…

在NestJS中有一种场景,在注入的时候需要将多个实现了同一个接口的service都注入到系统里,而NestJS中默认时没有这种注入,此时我们可以使用一个变通的provider来实现这一功能。

看下面例子,假定我们有一个OSService接口,其中定义了一个方法返回OSUser数组,假定我们有多个实现类,比如这里的LinuxOSService和WindowsOSService,我们希望将这两个实现类都注入到系统中,那么我们可以这样实现:

osuser.ts

定义一下基本的OSUser对象和OSUserType枚举。

export interface OSUser {name: string;type: OSUserType;
}export enum OSUserType {LINUX = 'LINUX',WINDOWS = 'WINDOS',
}

osuser.service.ts

定义OSUserService接口和两个实现类LinuxOSUserService和WindowsOSUserService。

import { Injectable } from '@nestjs/common';
import { OSUser, OSUserType } from './osuser';export interface OSUserService {getUsers(): OSUser[];
}@Injectable()
export class LinuxOSUserService implements OSUserService {users: OSUser[] = [];getUsers(): OSUser[] {this.users = [{ name: 'John', type: OSUserType.LINUX },{ name: 'Jane', type: OSUserType.LINUX },{ name: 'Bob', type: OSUserType.LINUX },];return this.users;}
}@Injectable()
export class WindowsOSUserService implements OSUserService {users: OSUser[] = [];getUsers(): OSUser[] {this.users = [{ name: 'John', type: OSUserType.WINDOWS },{ name: 'Jane', type: OSUserType.WINDOWS },{ name: 'Bob', type: OSUserType.WINDOWS },];return this.users;}
}

osuser.controller.ts

控制器注入了OSUserServices,这是一个数组,包含了所有的OSUserService实现类,然后在list方法中遍历这个数组,获取所有的OSUser对象,最后返回。

import { Controller, Get, Param, Inject } from '@nestjs/common';
import { OSUserService } from './osuser.service';
import { OSUser, OSUserType } from './osuser';@Controller('osuser')
export class OSUserController {constructor(@Inject('OSUserServices') private osUserServices: OSUserService[],) {}@Get()list() {const osUsers: OSUser[] = [];this.osUserServices.map((osUserService) => {osUserService.getUsers().map((osUser) => osUsers.push(osUser));});return osUsers;}
}

osuser.module.ts

模块的providers中定义了两个OSUserService的实现类,并且定义了一个新的provider,这个provider的名字是’OSUserServices’,它的值是一个工厂函数,这个工厂函数接收两个参数,分别是LinuxOSUserService和WindowsOSUserService,然后返回一个数组,这个数组包含了所有的OSUserService实现类。

import { Module } from '@nestjs/common';
import { OSUserController } from './osuser.controller';
import {OSUserService,LinuxOSUserService,WindowsOSUserService,
} from './osuser.service';@Module({imports: [],controllers: [OSUserController],providers: [LinuxOSUserService,WindowsOSUserService,{provide: 'OSUserServices',useFactory: (linuxOSUserService, windowsOSUserService) => [linuxOSUserService,windowsOSUserService,],inject: [LinuxOSUserService, WindowsOSUserService],},],
})
export class OSUserModule {}

总结

通过以上步骤,我们实现了在NestJS中注入多个实现了同一个接口的service的功能,这种变通的方法可以解决一些特殊场景下的注入问题。

http://www.hengruixuexiao.com/news/46763.html

相关文章:

  • 常州网站推广排名seo推广排名公司
  • 南京市城乡建设委员会的网站互联网营销专业
  • 模板网站seo重庆seo全网营销
  • 网址查询ip解析磐石网站seo
  • 如何做旅游网站的供应商免费p站推广网站入口
  • 新疆网站建设品牌直销怎么做才最快成功
  • 如何有效的推广宣传北京网优化seo公司
  • 做门户网站代码质量方面具体需要注意什么seo搜索引擎优化工资多少钱
  • 郑州威客网站建设新浪新闻疫情
  • 珠海网站制作首页长沙网站推广服务公司
  • 动态网站建设实训周实训心得爱站网络挖掘词
  • go语言 做网站提高百度搜索排名工具
  • 专业服务网站建设企业推广公司
  • 网站建设柒金手指花总14百度惠生活怎么优化排名
  • 中企动力做网站多久能好专业培训心得体会
  • 北京响应式网站建设山东服务好的seo
  • 云虚拟主机建设网站一定要域名seo优化查询
  • 网站首页为什么不收录如何让百度收录
  • 长春星宿网站建设公司怎么样seo外链建设的方法有
  • 建设电影推荐网站的项目背景百度应用市场下载安装
  • 毕设做网站些什么比较简单百度一下 你就知道官方
  • 欢迎回来请牢记网站域名搜索百度一下
  • 网站定制报价表seo网站排名
  • 如何建网站教程视频宁波seo在线优化哪家好
  • 买实体服务器做网站黑帽seo技术论坛
  • 体育网站的制作哪里可以做互联网最赚钱的行业
  • 赣州网站建设联系方式推广普通话手抄报内容资料
  • 网站的首页需要什么内容世界杯比分查询
  • 网站的数据库丢失西安网站seo排名优化
  • 集团公司网站案例我想做百度推广