我要在我的角度Js应用程序上设置分页。我目前正在使用此查询。 query documention
TableName: 'articles_staging',
IndexName: 'feeds_feedname-index',
KeyConditions: {
"feeds_feedname": {
"AttributeValueList": [{
"S": arrayfeeds[j]
}
],
"ComparisonOperator": "EQ"
}
}
我如何应用分页使用此功能。
答案 0 :(得分:0)
好吧,坏消息是DynamoDB中没有分页(特别是没有OFFSET参数)。我有scan()
的这个函数来处理分页(PHP代码):
private function scan($table, $filter = [], $select = null, $limit = 10)
{
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$options = [
'TableName' => $table,
'Count' => true,
];
if (!empty($limit)) {
$options['Limit'] = $limit;
}
if (!is_null($select)) {
$options['Select'] = $select;
}
if (!empty($filter)) {
$options['ScanFilter'] = $filter;
}
// For pagination:
$results = $this->_client->scan($options);
while ($page > 0 && isset($results['LastEvaluatedKey'])) {
$results = $this->_client->scan($options);
$options['ExclusiveStartKey'] = $results['LastEvaluatedKey'];
$page--;
}
return $results;
}
$this->_client
指的是DynamoDB连接
正如您所看到的,我检查LastEvaluatedKey
作为响应,如果它在那里,那么它在数据库中的意思仍然是未返回的条目。比我循环直到这个参数消失。