OData: как получить самый высокий идентификатор в UI5 - PullRequest
1 голос
/ 08 января 2020

У меня есть служба OData, которая доставляет все записи из таблицы. Каждая строка имеет свой собственный идентификатор. Я пытаюсь получить самый высокий идентификатор и назначить его переменной в моем приложении.

Это мой код 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");

Результаты выглядят так:

results of my OData feed request

Я не знаю, как получить к нему доступ. Я только хочу иметь самый высокий ID. С getProperty у меня не было успеха.

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Я пытаюсь получить самый высокий ID

Одним из решений было бы использование $top=1 вместе с по убыванию $orderby. Например: https://.../Northwind.svc/Products? $ orderby = ProductID desc & $ top = 1 & $ format = json

В UI5 с v2.ODataModel это может выглядеть как-то например:

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 устраняет необходимость в l oop через канал клиента, снижая нагрузку на данные
  • $orderby=... desc подталкивает соответствующий объект к top
  • $select=... дополнительно запрашивает только обязательное свойство в типе сущности, дополнительно снижая нагрузку на данные.
0 голосов
/ 08 января 2020

это решение

            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);
                }
            });
...