如何在 Appian web api 中获取数据库行数

How to get a count of database rows in Appian web api

我正在尝试在 Appian 中编写一个自定义 web-api,它将 [除其他外] return 数据库中行数的计数 table。为此,我在 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 项目工作正常 - 从我的 table [尽管一次 10] 生成一个很好的 json 数据行列表。但是当我使用 numRecs 字段为 countOfRows 添加代码时,该函数失败并出现错误 500.

有什么想法吗?

[添加了额外的细节]

我 [也] 尝试写一个单独的 api 它 [只] return 是我实体的行数,但它 [也] return 是错误 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)
  )
)

谢谢堆,

大卫.

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 的批处理大小。它[不过] returns 数据库中正确的行数...

通过类似地将批量大小更改为较小的数字 [而不是 -1 来检索所有记录],我的 [原始] 代码也能正常工作。事实证明,检索 all 记录并不是获得此 totalCount 字段的正确值所必需的:

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

事实上,将 batchsize 设置为 0 [对于此应用程序] 是最佳选择,因为这会获取元数据(包括 totalCount)而实际上不会浪费任何处理时间来检索数据行(未使用的数据行)在这种情况下)- 从而提高性能(感谢 Mike Schmitt 提供的提示)。