Я прочитал этот вопрос / ответ Как вызвать метод контроллера Loopback4 с другого контроллера ОДНАКО мой вариант использования немного отличается.
В отличие от этого ответа выше, мне НЕОБХОДИМО мой Функции API должны быть доступны через http (и я также не смог получить даже ответ по ссылке выше, чтобы работать).
Мой вариант использования Мне нужно, чтобы мой главный контроллер go и получить все местоположения через iciService (который все хорошо и работает), НО тогда мне нужно вставить все эти данные о местоположении в другой источник данных (mongoDB), я полагаю, импортировав мой контроллер местоположений, верно? Но как именно, я не уверен.
Я исследовал это, но мне непонятно. Я не сильный программист.
Вот мой Главный контроллер код:
import { inject } from '@loopback/context';
import { iciService } from '../services/ici.service';
import { get, param } from '@loopback/rest';
export class iciController {
constructor(
@inject('services.ici')
private iciService: iciService
) {}
@get('/locations')
getall() {
return this.iciService.getLocations();
}
}
А вот Контроллер локаций , который мне нужен ссылка на.
import {
Count,
CountSchema,
Filter,
FilterExcludingWhere,
repository,
Where,
} from '@loopback/repository';
import {
post,
param,
get,
getModelSchemaRef,
patch,
put,
del,
requestBody,
} from '@loopback/rest';
import {Location} from '../models';
import {LocationRepository} from '../repositories';
export class LocationController {
constructor(
@repository(LocationRepository)
public locationRepository : LocationRepository,
) {}
@post('/locations', {
responses: {
'200': {
description: 'Location model instance',
content: {'application/json': {schema: getModelSchemaRef(Location)}},
},
},
})
async create(
@requestBody({
content: {
'application/json': {
schema: getModelSchemaRef(Location, {
title: 'NewLocation',
}),
},
},
})
location: Location,
): Promise<Location> {
return this.locationRepository.create(location);
}
}