OData:如何获取UI5中的最高ID

OData: how to get the highest ID in UI5

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

这是我的 JS 代码,我在其中按 Id 对所有条目进行排序并制作顶部,只有一个。

oModel.read("/ZDEMA_LENDINGS2Set?$orderby=Id desc &$top=1", {
  success: function(oData, oResponse) {
    console.log("Data", oData);
    console.log("Response", oResponse);
    //data = oModel.getProperty("/ID");

结果如下所示:

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

I am trying to get the highest ID

其中一个解决方案是同时使用 $top=1descending $orderby。例如:https://.../Northwind.svc/Products?$orderby=ProductID desc&$top=1&$format=json

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

myODataModel.read("/Products", {
  sorters: [
    new Sorter("ProductID", /*descending*/true) // "Sorter" required from "sap/ui/model/Sorter"
  ],
  urlParameters: {
    "$select": "ProductID",
    "$top": 1,
  },
  success: function(data) {
    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);
                }
            });