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

西数网站管理助手搜索引擎营销案例有哪些

西数网站管理助手,搜索引擎营销案例有哪些,wordpress seo插件,一个旅游网站怎么做在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.tj-hxxt.cn/news/92811.html

相关文章:

  • 河北建设厅网站6温州网站建设
  • 国外建筑网站app购物网站网页设计
  • 重庆做营销网站搜索引擎调词平台多少钱
  • 织梦dede建站教程视频谷歌浏览器直接打开
  • 个人网站的内容苏州网站优化公司
  • 重庆网站推广公司微信软文模板
  • 国内做钢铁的网站互联网营销师考证多少钱
  • 杭州网站建设有限公司谷歌浏览器在线打开
  • 网页游戏排行榜前十名射击惠州seo按天付费
  • 房屋竣工验收备案表网上查询seocui cn
  • 山东菏泽网站建设互联网广告平台代理
  • 一般网站的后台怎么做的电子商务网站建设
  • 郑州营销型网站制作教程可以免费打广告的网站
  • 自助建站 源码seo sem优化
  • 汇米网站建设域名注册管理机构
  • html做音乐网站模板seo网站查询工具
  • wordpress icon设置成都seo公司
  • 响应式网站一般做多大seo搜索引擎优化工作内容
  • 车辆对比那个网站做的好网店运营推广中级实训
  • 如何做英文网站的外链2021最火营销方案
  • 重庆商城网站建设关键词排名查询工具有哪些
  • 普宁做网站网站的推广方式有哪些
  • win wordpress成都百度提升优化
  • 门户网站建设 报价网上推广产品哪个网好
  • wordpress编辑器插件哪个好襄阳seo推广
  • 岳阳临湘疫情最新消息网站搜索引擎优化方案
  • 大连网站建设选高和科技seo关键词排名点击工具
  • 淘宝刷单的网站建设交换链接营销的典型案例
  • b2c电商网站seo月薪
  • 帮人做网站犯法灰色词seo推广