我有一个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
在生产环境中使用。那么如何以这种方式部署呢?
为什么不直接使用带有dotenv
and的标准方法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 一起使用