小编Fai*_*wen的帖子

从另一个模块注入nestjs服务

我有一个PlayersModule和一个ItemsModule.

我想用ItemsServicePlayersService.

当我通过注射添加它时:

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.这两项服务都在他们的模块中单独工作.

javascript node.js nestjs

20
推荐指数
4
解决办法
8423
查看次数

使用 dotenv 配置 Nestjs

参考NestJS官方文档ConfigService为了使用环境变量,推荐使用。

因此,在代码中,我们使用以下内容访问.env文件中定义的所有变量:

config.get('PORT')
Run Code Online (Sandbox Code Playgroud)

但不建议.env在生产环境中使用。那么如何以这种方式部署呢?

为什么不直接使用带有dotenvand的标准方法process.env.PORT

configuration nestjs

6
推荐指数
1
解决办法
1万
查看次数

使用 typegoose 将项目添加到 Ref 数组

我有 2 个课程扩展Typegoose(ItemPlayer)

在课堂上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 一起使用

mongoose

4
推荐指数
1
解决办法
2855
查看次数

标签 统计

nestjs ×2

configuration ×1

javascript ×1

mongoose ×1

node.js ×1