gpt4 book ai didi

javascript - 适用于 JavaScript 的 SAP Cloud SDK : Filter on Expanded Entities

转载 作者:行者123 更新时间:2023-12-02 21:45:07 24 4
gpt4 key购买 nike

我知道我正在重新打开一个旧的 ( Perform filter on expanded entity with SAP Cloud SDK ),但它是不久前的事,并且正在引用用于使用 S/4 HANA 服务的 API 的 Java 版本。

我正在针对 SuccessFactors OData API 测试 API 的 Javascript 版本,该 API 确实能够对扩展实体执行过滤器,如下所示:

<API_HOST>/odata/v2/PerPerson?$filter=personalInfoNav/firstName eq 'MARCO'&$expand=personalInfoNav&$select=personalInfoNav/firstName, personalInfoNav/lastName&$top=20

翻译成 SDK,它将是(TypeScript):

const personList: Array<PerPerson> = 
await PerPerson.requestBuilder().getAll().top(20)
.select(
PerPerson.DATE_OF_BIRTH,
PerPerson.PERSONAL_INFO_NAV.select(
PerPersonal.PERSON_ID_EXTERNAL,
PerPersonal.FIRST_NAME,
PerPersonal.LAST_NAME,
PerPersonal.GENDER
)
).filter(PerPersonal.FIRST_NAME.equals('MARCO'))
.execute({ destinationName: this.configService.get<string>('ACTIVE_DESTINATION') });

但是由于过滤器函数的类型不兼容,该代码无法编译,这里需要“PerPerson”类型而不是“PerPersonal”。我找不到任何关于此的信息。

考虑到普通的 OData 查询工作得很好,有人能够做到这一点吗?

最佳答案

更新:

我最初并不了解 Successfactors 在协议(protocol)之上提供了此功能。我能想到两种可能的解决方法:

  1. 使用新过滤器,例如:
PerPerson.requestBuilder().getAll().top(20)
.select(
...
).filter(
new Filter('personalInfoNav/firstName', 'eq', 'MARCO')
)
...
  • 如果这不起作用,您可以在请求构建器上调用 build 而不是 execute,这会为您提供 ODataRequest 对象您可以获取 URL,然后您必须手动操作该 URL。然后,您应该能够使用 executeHttpRequest 函数针对目标执行此自定义请求对象。
  • 请告诉我其中一个是否适合您!

    <小时/>

    原始答案:

    仅当两个实体之间的关系为 1:1 时,才可以对 OData v2 上的扩展实体进行过滤。在这种情况下,代码将如下所示:

    PerPerson.requestBuilder().getAll().top(20)
    .select(
    PerPerson.DATE_OF_BIRTH,
    PerPerson.PERSONAL_INFO_NAV.select(
    PerPersonal.PERSON_ID_EXTERNAL,
    PerPersonal.FIRST_NAME,
    PerPersonal.LAST_NAME,
    PerPersonal.GENDER
    )
    ).filter(
    PerPerson.PERSONAL_INFO_NAV.filter(
    PerPersonal.FIRST_NAME.equals('MARCO')
    ))
    ...

    但是,如果关系是 1:n,则无法进行过滤。

    希望有帮助!

    关于javascript - 适用于 JavaScript 的 SAP Cloud SDK : Filter on Expanded Entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271701/

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