在环回 4 中对数据库执行查询
Executing query on database in loopback 4
我正在尝试使用下面提到的环回 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)
}
}
您正在尝试直接使用 class,这在 JavaScript 或 TypeScript 中是不可能的。您将需要一个已由 LoopBack 4.
初始化的 class(对象)的实例
controller中应该有依赖注入的构造器:
// 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'
);
进一步阅读
我正在尝试使用下面提到的环回 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)
}
}
您正在尝试直接使用 class,这在 JavaScript 或 TypeScript 中是不可能的。您将需要一个已由 LoopBack 4.
初始化的 class(对象)的实例controller中应该有依赖注入的构造器:
// 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'
);