我有一个PlayersModule和一个ItemsModule.
我想用ItemsService在PlayersService.
当我通过注射添加它时:
import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType, Ref } from 'typegoose';
import { Player } from './player.model';
import { Item } from '../items/item.model';
import { ItemsService } from '../items/items.service';
@Injectable()
export class PlayersService {
constructor(
@InjectModel(Player) private readonly playerModel: ModelType<Player>,
private readonly itemsService: ItemsService){}
Run Code Online (Sandbox Code Playgroud)
我得到这个嵌套错误:
[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Nest无法解析PlayersService(+ ,?)的依赖关系.请确保索引[1]的参数在当前上下文中可用.
两个模块都导入了app.module.ts.这两项服务都在他们的模块中单独工作.
参考NestJS官方文档,ConfigService为了使用环境变量,推荐使用。
因此,在代码中,我们使用以下内容访问.env文件中定义的所有变量:
config.get('PORT')
Run Code Online (Sandbox Code Playgroud)
但不建议.env在生产环境中使用。那么如何以这种方式部署呢?
为什么不直接使用带有dotenvand的标准方法process.env.PORT?
我有 2 个课程扩展Typegoose(Item和Player)
在课堂上Player我得到了一个数组Ref<Item>[]
@arrayProp({itemsRef: Item})
items?: Ref<Item>[];
Run Code Online (Sandbox Code Playgroud)
在我的中PlayersService,我使用这种方法来推送Item:
async pushItem( itemPlayerDto: {playerId: string, item: Item}) : Promise<Player> {
let player = await this.findById(itemPlayerDto.playerId);
player.items.push(itemPlayerDto.item);
return await new this.playerModel(player).save();
}
Run Code Online (Sandbox Code Playgroud)
但是当我检索时Players,它们items没有被填充,只有一个Array of ObjectId.
async findAll(): Promise<Player[]> | null {
return await this.playerModel.find().exec();
}
Run Code Online (Sandbox Code Playgroud)
PS:我将 Typegoose 与 Nestjs 和 netsjs-typegoose 一起使用