【问题标题】:call module service in another service nestjs在另一个服务nestjs中调用模块服务
【发布时间】:2021-08-30 15:24:31
【问题描述】:

我尝试在 nestjs 文档和 github 上寻找答案以及这个问题:Nestjs Dependency Injection - Inject service into service,但找不到任何答案,只有循环依赖。我有产品服务:

products.service.ts

@Injectable()
export class ProductsService {
    constructor(@InjectModel(Product.name) private productModel: Model<ProductDocument>) {}

    // TODO: return string переделать 
    async create(createProductDto: CreateProductDto): Promise<Product> {
        // TODO: need call CategoriesService.findOne(createProductDto.id) to check exist categories by id

        const createdProduct = new this.productModel(createProductDto);

        return createdProduct.save();
    }
}

在 products.module.ts i 并添加到导入数组类别模块

products.module.ts

@Module({
    imports: [
        MongooseModule.forFeature([
            { name: Product.name, schema: ProductSchema },
        ]),
        // add CategoriesModule
        CategoriesModule,
    ],
    controllers: [ProductController],
    providers: [ProductsService],
})
export class ProductModule {}

categories.module.ts

@Injectable()
export class CategoriesService {
    constructor(@InjectModel(Category.name) private categoryModel: Model<CategoryDocument>) {}
    async findOne(@Param('id') id: string): Promise<boolean> {
        // need only check exist category
        const exist = await this.categoryModel.findOne({ id }, { _id: true });
        if (exist) {
            return true;
        }
        return false;
    }
}

请告诉我如何正确调用另一个模块的服务方法

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    在 products.service.ts 我添加私有变量 categoriesService,然后调用它

    constructor(@InjectModel(Product.name) private productModel: Model<ProductDocument>, private readonly categoriesService: CategoriesService) {}
    

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多