v4l2Loopback 4,使用带有postgres连接器的SQLQuery进行查询



这就是我如何定义我的存储库的,下面是环回文档中给出的非常通用的示例:-

import {DefaultCrudRepository, juggler} from '@loopback/repository';
import {AModel} from '../models';
import {TimeseriesDataSource} from '../datasources';
import {inject} from '@loopback/core';
export class AModelRepository extends DefaultCrudRepository<
AModel,
typeof AModel.prototype.id
> {
constructor(
@inject('datasources.timeseries') dataSource: TimeseriesDataSource,
) {
super(AModel, dataSource);
}
}

我希望如果做AModelRepository.execute(sql, null, cb),它会起作用。但其给出的错误——Error: Not implemented

非常感谢您的帮助。

不知怎么的,我通过注入像这样的数据源使它工作起来

export class SomeController {
constructor(
@repository(SomeRepository) public someRepository: SomeRepository,
@inject('datasources.timeseries') public dataSource: timeseriesDataSource,
) {}
someMethod(){
this.dataSource.connector.execute(sql, params, cb)
}

如果我找到更好的方法,我会编辑。请随时更正这个答案。

LoopBack 4还不支持execute操作。我们最近在第2053期中讨论了这一限制。关于如何绕过当前限制的一些想法,请参阅我的评论。我打开了一个pull请求,向loopback-datasource-juggler添加一个基于承诺的dataSource.executeAPI,请参阅https://github.com/strongloop/loopback-datasource-juggler/pull/1671.一旦该更改落地并发布,实现DefaultCrudRepository.prototype.execute()将是微不足道的。

我们欢迎社区的贡献,如果你能为execute的实现做出贡献,那就太好了。请参阅我们的贡献指南开始。

截至目前,在Loopback 4中,@Miroslav的上述答案正在发挥作用。

我是这样使用的:

export class SomeDataSource extends juggler.DataSource {
constructor(
@inject('DATA_CONFIG_SOURCE') private dsConfig: object
) {
super(dsConfig);
}
}
//in tests
const datasource = new SomeDataSource(postgresConfig);
dataSource.execute(sqlStatement);
//at the end of the tests
await dbDataSource.disconnect();

相关内容

  • 没有找到相关文章

最新更新