【问题标题】:Passing $expand parameter to an OData function将 $expand 参数传递给 OData 函数
【发布时间】:2017-03-10 00:03:10
【问题描述】:

所以我使用 NW Gateway 实现了一个函数导入,我惊喜地发现我可以添加 oData 查询选项 $expand 并且它起作用了!

现在我想通过从我的 SAPUI5 应用程序传递一个 $expand 参数来利用它。但我找不到一种方法来完成这项工作。我的电话看起来像这样......

oModel.callFunction("/VehicleSearch", {
  method: 'GET',
  urlParameters: {"$expand": "Owner", "SearchString": searchString},
  success: function(oData, response) { },
  failure: $.proxy(function(oError) { } 
});

传递了 SearchString 参数,但没有传递 $expand。

【问题讨论】:

  • $expand 似乎可以与许多 oData 服务一起正常工作 - 虽然文档没有明确提到它也没有排除它。这是一个工作示例services.odata.org/V3/OData/OData.svc/…
  • 你说得对,UI5 1.38版本为oModel.callFunction增加了$expand

标签: odata sapui5


【解决方案1】:

我在当前项目中没有使用 OData,因此我的知识可能不是最新的。据我所知 $expand 参数不适用于函数调用。如果您检查 callFunction 的实现,您会明白为什么只有搜索参数到达后端:未在函数中定义的参数将不会被传递。

【讨论】:

  • 你说得对,UI5 1.38版本为oModel.callFunction增加了$expand
【解决方案2】:

您遇到了“当前”缺失的功能。 UI5 版本 1.38 为 oModel.callFunction 添加了 $expand

一种解决方法是使用 read 而不是 callFunction(将 $expand 添加到 url)。

updateData: function() {
    var oVizFrame = this.getView().byId("idVizFrame");
    var url = "QueryLogAnalysis?viewVariant=myFavorites&$expand=Values&$format=json";
    var parameters = {
        success: function(oData, response) {
            var resultData = JSON.parse(response.body);
            var dataModel = new sap.ui.model.json.JSONModel(resultData.d.results[0]);
            oVizFrame.setModel(dataModel,"expandWorkaround");
        },
        error: function(oError) {
            console.log(oError);    // i.e.
        }
    };
    var serviceUrl = this.getView().getModel().sServiceUrl;
    var oJsonModel = new sap.ui.model.odata.ODataModel(serviceUrl);
    oJsonModel.read( url, parameters );
}

【讨论】:

    【解决方案3】:

    我认为你不能扩展一个函数 Import。当实体具有关联并且您正在查询与一种或多种另一种类型关联的实体时,使用扩展。除非您将它们放在展开列表中,否则不会自动获取相关实体。函数导入更像函数调用。事实上,它们的回报是有限的。

    【讨论】:

    • 你说得对,UI5 1.38版本会为oModel.callFunction添加$expand
    • 函数导入定义要返回的实体或实体集。您可以扩展其关联,就像您从读取操作中扩展 Entity 或 EntitySet 本身一样。
    【解决方案4】:

    UI5 1.38 版本将为 oModel.callFunction 添加 $expand

    【讨论】:

    • 有工作的例子吗?对我来说,它似乎不起作用(使用比 1.38 更新的版本。)
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多