Как получить количество строк базы данных в веб-API Appian - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь написать пользовательский веб-API в Appian, который [среди прочего] вернет счетчик количества строк в таблице базы данных. С этой целью я добавил эту локальную переменную в мой код API.

local!countOfRows: a!queryEntity(
    entity: cons!MY_DATABASE_TABLE_DS,
    query: a!query(
      pagingInfo: a!pagingInfo(
        startIndex: 1,
        batchSize: -1
      )
    ),
    fetchTotalCount: true
  ).totalCount,

Идея состоит в том, что я включу это значение в качестве одного из выходных данных в json. Например:

local!dataBaseCasesWithDocs: {
    numRecs: local!countOfRows,
    recList: local!listOfRecords
}

Пока что элемент recList работает просто отлично, создавая хороший json список строк данных из моей таблицы [хотя и 10 за раз]. Но когда я добавляю код для countOfRows, используя поле numRecs, функция завершается с ошибкой 500.

Есть мысли?

[Добавлены дополнительные детали]

У меня есть [также] попытался написать отдельный API, который [только] возвращает количество строк для моей сущности, но он [также] возвращает ошибку 500 ...

a!localVariables(
  local!entities: a!queryEntity(
    entity: cons!MY_DATABASE_TABLE_DS,
    query: a!query(
      pagingInfo: a!pagingInfo(
        startIndex: 1,
        batchSize: -1
      )
    ),
    fetchTotalCount: true
  ).totalCount,
  a!httpResponse(
        headers: {
      a!httpHeader(name: "Content-Type", value: "application/json")
    },
    body: a!toJson(value: local!entities)
  )
)

благодаря куче,

Дэвид.

1 Ответ

0 голосов
/ 29 января 2020
with(
  local!entities: a!queryEntity(
    entity: cons!MY_DATABASE_TABLE_DS,
    query: a!query(
      pagingInfo: a!pagingInfo(
        startIndex: 1,
        batchSize: 0
      )
    ),
    fetchTotalCount: true
  ).totalCount,
  a!httpResponse(
    headers: {
      a!httpHeader(name: "Content-Type", value: "application/json")
    },
    body: a!toJson({count: local!entities})
  )
)

Единственным отличием было то, что я добавил размер пакета 10. Он [тем не менее] возвращает правильное количество строк в базе данных ...

Я получил [оригинальный] код, работающий как хорошо, аналогично изменяя размер пакета на меньшее число [вместо -1, чтобы получить все записи]. Оказывается, что для извлечения всех записей не нужно получать правильное значение для этого поля totalCount:

local!countOfRows: a!queryEntity(
    entity: cons!MY_DATABASE_TABLE_DS,
    query: a!query(
      pagingInfo: a!pagingInfo(
        startIndex: 1,
        batchSize: 0
      )
    ),
    fetchTotalCount: true
  ).totalCount,   

На самом деле установка размера пакета в 0 [для этого приложения] лучший вариант, так как он получает метаданные (включая totalCount), не тратя впустую время обработки, извлекая строки данных (которые в этом случае не используются), тем самым повышая производительность (спасибо Майку Шмитту за подсказку по этому вопросу) .

...