admin管理员组

文章数量:1322838

I have a loopback 4 controller with a function that I don't want to expose via HTTP. I would like to be able to call the function from another controller.

How can I do this? Is there any way of injecting a controller in another controller? (I 'm able to inject repositories in controllers, but not controllers in other controllers).

I have a loopback 4 controller with a function that I don't want to expose via HTTP. I would like to be able to call the function from another controller.

How can I do this? Is there any way of injecting a controller in another controller? (I 'm able to inject repositories in controllers, but not controllers in other controllers).

Share Improve this question edited Jun 1, 2019 at 18:35 nassim 1,5531 gold badge15 silver badges28 bronze badges asked Jun 1, 2019 at 17:08 DinisDinis 511 silver badge5 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 5

You have to first import repository of another controller e.g.

import { MemberRepository, EmailTemplateRepository } from '../repositories';

then you have to inject it in constructor like this:-

@repository(EmailTemplateRepository) public emailTemplateRepository: EmailTemplateRepository,

then after you can use any function of controller like this:-

const template = await this.emailTemplateRepository.findOne({
  where: {
    slug: 'user-password-reset',
    status: 1
  }
}); 

Answer is here: https://github./strongloop/loopback-next/issues/3028

@inject(‘controllers.AnotherController’) c: AnotherController

Ok I figured out how to make this work. You have to import the @repository ponent where the rest of the other import statements are, like so:

import { repository } from '@loopback/repository';

Adding this, will allow for, @repository(EmailTemplateRepository) public emailTemplateRepository: EmailTemplateRepository, to work.

本文标签: javascriptHow to call Loopback4 controller39s method from another controllerStack Overflow