gpt4 book ai didi

angular - JHipster:使用标准过滤实体 - 预期的 Angular 客户端方法

转载 作者:太空狗 更新时间:2023-10-29 17:26:01 24 4
gpt4 key购买 nike

我最近开始使用 JHipster - 感谢这个出色项目的维护者!

在当前版本的 JHipster(撰写本文时为 4.10.2)中,实体可以通过实体子生成器启用过滤,或者通过包含 filter EntityNameservice EntityName将 serviceClass 添加到项目的 JDL 文件中。这会生成一个 Spring 项目,其中 EntityNameResource 类中的 getAllEntities() 方法采用从 URL GET< 构造的 Criteria 参数 参数。

这与为端点生成的 Swagger UI 开箱即用,并且此 UI 发出的查询表明后端期望每个条件都采用 GET 的形式> 参数键值对;这与 the 4.10.2 Filtering docs 一致.

但是,我想知道是否有一种预期的方法可以从我错过的前端 Angular 项目中使用它,除了自己进行适当的修改以构建符合标准的 URL 之外。

前端服务使用静态函数createRequestOption(req)(从app/shared/model/request-util.ts导出)填充GET参数,用于分页和排序。此函数还期望传入的 req 对象可能具有 query 属性;最初,我认为填充此参数是使用后端过滤的预期方式。

但是,createRequestOption(req) 的实现当前将 req.query 的值放入名为 query 的 GET 参数中;也就是说,这不会产生后端期望的查询格式,后端需要每个标准一个单独的 GET 参数。

我使用的解决方案是修改 createRequestOption(req) 以期望键值对对象数组而不是 req.query(我已经调用它 req.criteria),并将它们添加到 URLSearchParams 的数组中(它必须是数组,而不是 map ,因为可能有多个参数具有相同的键,例如 name.in=Megatron&name.in=Optimus)。

所以我改变了:

params.set('query', req.query);

到:

if (req.criteria && req.criteria.length > 0) {
req.criteria.forEach((criterion) => {
params.append(criterion.key, criterion.value);
});
}

...使用组件代码按照以下行填充数组:

let criteria = [
{key: 'name.equals', value: 'Optimus'},
{key: 'power.equals', value: '10'}
];

this.entityService.query({
page: this.page - 1,
size: this.itemsPerPage,
sort: this.sort(),
criteria
});

我刚刚在 GitLab 中使用这种方法创建了一个在实践中使用某些表单字段过滤测试单一实体单体应用程序(目前仅等于查询)的示例 here .

所以,我的问题是:

  • 我是否错过了使用当前 JHipster 版本执行此操作的预期方式?
  • request-utils.ts 的当前实现中,req.query 的预期用途是什么?
  • 此区域是否会在即将发布的版本中发生变化?例如,是否可以像支持 ElasticSearch 的应用程序那样自动生成前端搜索字段(但针对每个实体属性)?

非常感谢。

最佳答案

我在我的项目中也做过类似的事情,在我的解决方案中,标准是这样使用的:

let criteria = {
'name.equals' : 'Optimus',
'power.equals' : '10'
};

目前,我在“自动完成”字段上工作,它将使用标准,并且对 request-util.ts 有必要的扩展。这里: https://github.com/jhipster/generator-jhipster/pull/6618

是的,我认为“查询”方法的参数有点困惑,需要稍微简化一下。

或许,我们可以生成“EntityCriteria.java”的客户端版本,如“entity-criteria.ts”,但我不确定。不断插入新功能和更少的代码,我可以理解。

关于angular - JHipster:使用标准过滤实体 - 预期的 Angular 客户端方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com