使用vogels js实现分页

时间:2015-12-22 01:14:05

标签: amazon-dynamodb

我正在实施一个带有dynamodb + nodejs后端的网站。我在服务器端使用Vogels.js来查询dynamodb并在网页上显示结果。因为我的查询返回了很多结果,所以我想最初只将N(例如5)结果返回给用户,并在用户要求更多时返回下一个N结果。

有没有办法可以运行两个vogels查询,第二个查询从第一个查询中断的地方开始?谢谢。

2 个答案:

答案 0 :(得分:8)

是的,vogels完全支持查询和扫描操作的分页。

例如:

var Tweet = vogels.define('tweet', {
  hashKey  : 'UserId',
  rangeKey : 'PublishedDateTime',
  schema : {
    UserId            : Joi.string(),
    PublishedDateTime : Joi.date().default(Date.now),
    content           : Joi.string()
  }
});

// Fetch the 5 most recent tweets from user with id 555:
Tweet.query(555).limit(5).descending().exec(function (err, data) {
  var paginationKey = data.LastEvaluatedKey;

  // Fetch the next page of 5 tweets
  Tweet.query(555).limit(5).descending().startKey(paginationKey).exec()
});

答案 1 :(得分:3)

是的,有可能,DynamoDB有一些名为" LastEvaluatedKey"这将为你的目的服务。

步骤1)使用选项"限制"查询您的表格=记录数

参考:http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

步骤2)如果您的查询的记录多于"限制值",则DynamoDB将返回" LastEvaluatedKey"您可以在下一个查询中传递" ExclusiveStartKey"获取下一组记录,直到没有记录为止

参考:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Query

注意:请注意,要获取上一组记录,您可能需要存储所有" LastEvaluatedKeys"并在应用程序级别实现这一点