如何在 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 提供的提示)。
我正在尝试在 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 提供的提示)。