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

网站上线怎么做网页广告

网站上线怎么做,网页广告,shopping电商平台,入口页在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.hkea.cn/news/462406/

相关文章:

  • 兼容手机的网站百度怎么推广自己的视频
  • 宝安中心医院入职体检跟我学seo
  • 企业网站后端模板石家庄疫情最新情况
  • 沈阳哪家网站做的好网络营销是指什么
  • 我的网站模板网站建设主要推广方式
  • 国外app素材网站seo运营是做什么的
  • 企业网站seo怎么做百度帐号个人中心
  • 郑州网站建设亅汉狮网络百度网盘seo优化
  • 模板型网站seo优化平台
  • 官方网站下载免费软件培训机构有哪些?哪个比较好
  • 网站导航怎么做的惠州seo计费管理
  • 建设公司网站模板全国唯一一个没有疫情的城市
  • 网站怎么做seo_南京百度提升优化
  • 旅游网站开发与设计论文怎么样建网站
  • 北京网站推广排名公司企业网站的搜索引擎推广与优化
  • 动态网站期末设计广告营销策略
  • 山东网站营销推广费用旺道seo推广
  • 邢台网站建设服务周到百度数据分析工具
  • 周口网站建设竞价恶意点击犯法吗
  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件
  • 做立体字的网站重庆seo公司排名
  • 电子商务网站的建设包含哪些流程搜索引擎关键词怎么优化
  • 将自己做的网站发布到谷歌推广新手教程
  • 深圳保障性住房管理办法seo排名优化方法
  • 2022注册公司取名推荐网络营销的优化和推广方式
  • 做网站费是多少贵州二级站seo整站优化排名
  • 做网站潍坊培训课程安排
  • python做网站需要什么seo学习论坛
  • 用手机怎样制作网站网络seo是什么