当前位置: 首页 > 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.yayakq.cn/news/655154/

相关文章:

  • 自己做网站如何盈利十大收益最好的自媒体平台
  • 服务器做php网站吗创建众筹网站
  • 做网站字体一般设置学室内设计前景如何
  • jsp的网站自适应网站制作公司
  • 工作室网站设计报告老师怪怪怪怪物
  • 沈阳建站平台网站公司备案通知
  • 怎么学会建自己网站的方法市场调研报告ppt
  • 重庆旅游网站建设地址免费php网站有哪些
  • 合肥模板网站建设软件网站建设开发人员须知
  • 公司网站建设技术的发展网站seo推广怎么做
  • 免费网站的建设重庆娱乐场所最新通知
  • 大连零基础网站建设培训电话网上制作名片
  • 四川简阳建设局招标公告网站重庆市建设工程信息网行业协会
  • 天津网站建设方案优化百度seo是什么意思
  • 如何做计算机网站工信部网站备案流程
  • 可以免费学编程的网站wordpress自带文章类型
  • 做暧暧xoxo网站用php做购物网站案例
  • 品牌网站建设坚持大蝌蚪市场部网页设计西安
  • 化妆品网站系统规划什么网站做班服比较好
  • 怎样做网站卖手机号合肥百姓网网站建设
  • 生物网站 template移动网站建设制作
  • 微信网站应用开发wordpress 能做哪些
  • 网站怎么做视频教程设计之家海报
  • 做网站卖得出去吗网站漏洞扫描工具
  • flash做网站步骤微信服务号功能开发
  • 会宁网站建设个人博客网站开发
  • 网站建设与管理考察报告淘宝客做网站卖什么好
  • 网站怎么做团购自己做片头的网站
  • 婚庆网站建设策划案2023年简短新闻三十条
  • 介绍几个有趣的网站福州网站备案