发电机db中的分页

时间:2014-09-03 05:47:57

标签: angularjs amazon-web-services pagination amazon-dynamodb

我要在我的角度Js应用程序上设置分页。我目前正在使用此查询。 query documention

 TableName: 'articles_staging',
                IndexName: 'feeds_feedname-index',
                KeyConditions: {
                    "feeds_feedname": {
                        "AttributeValueList": [{
                                "S": arrayfeeds[j]


                            }

                        ],

                        "ComparisonOperator": "EQ"
                    }
                }

我如何应用分页使用此功能。

1 个答案:

答案 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作为响应,如果它在那里,那么它在数据库中的意思仍然是未返回的条目。比我循环直到这个参数消失。