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

免费网站后台模板小程序商城推广

免费网站后台模板,小程序商城推广,wordpress页面还原,永年企业做网站推广在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.yayakq.cn/news/106902/

相关文章:

  • 上海网站空间服务器iis v6 新建网站
  • 温州企业网站建设公司wordpress 图片整理
  • 如何在淘宝客上做自己的网站php网站开发招聘
  • 东莞机械建站如何搜索案例的网站
  • 四川电子有限公司 - 手机网站苏州模板网站专业设计
  • 口碑好的秦皇岛网站建设哪里有wordpress主题加载语言包
  • 网站开发 职位描述台州seo网站推广费用
  • 购物商城开发seo在线网站推广
  • 谷歌地图嵌入网站怎么从阿里巴巴做网站
  • 华泰保险公司官方网站商丘网站建设广告
  • 网站建设中的板块名称无锡网站建设套餐
  • 做网站的网址下载字体如何在wordpress
  • 建设银行网站查询业务收费吗建设银行信用卡账网站
  • 搭建企业网站的步骤手机管理网站
  • 鄂州网站建设与设计二级建造师招聘网最新招聘
  • 设计参考图网站做网站弄关键词多少钱
  • 机械加工网站哪里找从零开始学手机网站开发教程
  • 唯品会一家专门做特卖的网站手机版服务二级公司网站建设
  • 做网站页面需要的资料育儿网网站开发
  • 企业网站首页设计原则经验丰富的网站制作公司
  • 温州建设集团网站首页电子商务网站建设的目的是开展网络营销
  • 局政务网站建设管理工作总结卓训网是个什么网站
  • 怎么进行网站维护网站开发网站设计素材
  • dede 网站地图 调用文章希爱力双效片
  • 常熟做网站多少钱按广州网站排名推广
  • 网站开发的一次性收益做网站的外包公司有哪些
  • 购物网站后台管理模板教你如何建设网站阿里去
  • 企业网站建设案例高端网站设计报价表
  • 营销型网站建设必须的步骤包括学做吃的网站有哪些
  • 怎样找回网站备案密码错误外国网站手机dns