OData:如何在UI5中获得最高ID

OData:如何在UI5中获得最高ID,odata,sapui5,Odata,Sapui5,我有一个OData服务,它提供表中的所有条目。每一行都有自己的ID。我正在尝试获取最高ID并将其分配给应用程序中的一个变量 这是我的JS代码,在其中,我按Id对所有条目进行排序,并创建一个top,以便只有一个条目 oModel.read/ZDEMA_LENDINGS2Set?$orderby=Id desc&$top=1{ 成功:functionoData、oResponse{ console.logData,oData; console.logResponse,或response; //dat

我有一个OData服务,它提供表中的所有条目。每一行都有自己的ID。我正在尝试获取最高ID并将其分配给应用程序中的一个变量

这是我的JS代码,在其中,我按Id对所有条目进行排序,并创建一个top,以便只有一个条目

oModel.read/ZDEMA_LENDINGS2Set?$orderby=Id desc&$top=1{ 成功:functionoData、oResponse{ console.logData,oData; console.logResponse,或response; //data=oModel.getProperty/ID; 结果如下所示:

我不知道如何访问它。我只想拥有最高的ID。使用getProperty,我没有成功

我正在尝试获取最高ID

解决方案之一是使用$top=1和降序$orderby。例如:

在带有v2.ODataModel的UI5中,它可能看起来像这样:

myODataModel.read/Products{ 分拣机:[ 新的分拣机产品ID,/*下降*/true//sap/ui/model/Sorter需要分拣机 ], URL参数:{ $select:ProductID, $top:1, }, 成功:functiondata{ const highestProdId=data.results[0].ProductID; // ... }, }; $top=1消除了通过提要客户端进行循环的需要,从而减少了数据负载 $orderby=…desc将相应的实体推到顶部 $select=…此外,仅请求实体类型中所需的属性,进一步减少了数据负载。 这就是解决办法

            oModel.read("/ZDEMA_LENDINGS2Set?$orderby=Id desc", {
                urlParameters: {
                    "$select": "Id",
                    "$top": 1
                },

                success: function(oData, oResponse) {
                    console.log("Data", oData);
                    console.log("Response", oResponse);

                    var highestId = oData.results[0].Id;
                    console.log(highestId);

                },
                error: function(oError) {
                    console.log("Error", oError);
                }
            });

只有当OData服务实现了相关的URL参数时,这才起作用,而这些参数显然不是case@Marc没错。但是,问题作者的实际问题是.read API的使用无效。即使在服务中实现了提到的系统查询,将这些查询添加到sPath作为第一个参数也不会有任何问题影响。这里的答案提供了一个可能的解决方案。请避免手动将查询添加到sPath。这是一种反模式,并且忽略了合同,它不是未来的证明。在这种情况下,应使用分拣机:[/*分拣机实例*/],而不是手动添加$orderby,如“谢谢”中所述。我将其更改为分拣机:[new sap.ui.model.SorterId,true],urlParameters:{$select:Id//$top:1},