Выполнение запроса к базе данных в обратном цикле 4

#loopback4

#loopback4

Вопрос:

Я пытаюсь выполнить запрос к базе данных, используя приведенный ниже код в цикле 4, но он выдает ошибку:
Свойство ‘execute’ не существует для типа ‘typeof MetadataLettersRepository’. Пожалуйста, помогите.

Соответствующие коды прилагаются здесь.

Определение репозитория:

 import {DefaultCrudRepository} from '@loopback/repository';
import {MetadataLetters, MetadataLettersRelations} from '../models';
import {RossmasDataSource} from '../datasources';
import {inject} from '@loopback/core';

export class MetadataLettersRepository extends DefaultCrudRepository<
  MetadataLetters,
  typeof MetadataLetters.prototype.id,
  MetadataLettersRelations
> {
  constructor(
    @inject('datasources.rossmas') dataSource: RossmasDataSource,
  ) {
    super(MetadataLetters, dataSource);
  }
}
  

Код контроллера:

 import {get} from '@loopback/rest';
import {MetadataLettersRepository} from '../repositories';


export class HelloController {
  
  @get('/searchByMetadata')
  async searchByMetadata(): Promise<any> {
    const result = await MetadataLettersRepository.execute(
      'SELECT * FROM metadata_letters'
    );
    console.log('Query run successfully...!!!')
    return (result)
  }
}


  

Ответ №1:

Вы пытаетесь напрямую использовать класс, что невозможно в JavaScript или TypeScript. Вам понадобится экземпляр класса (объект), который уже был инициализирован LoopBack 4.

В контроллере должен быть конструктор для внедрения зависимостей:

 // This may be different depending on how the controller was created.
// But the structure is more-or-less the same.

constructor(
  @repository(MetadataLettersRepository)
  protected repository: MetadataLettersRepository,
) {}
  

Это указывает LoopBack 4 предоставить экземпляр MetadataLettersRepository в repository переменную.

Оттуда repository.execute() можно использовать:

 // Notice the use of the `repository` variable.

const result = await repository.execute(
  'SELECT * FROM metadata_letters'
);
  

Дальнейшее чтение