我正在实施一个带有dynamodb + nodejs后端的网站。我在服务器端使用Vogels.js来查询dynamodb并在网页上显示结果。因为我的查询返回了很多结果,所以我想最初只将N(例如5)结果返回给用户,并在用户要求更多时返回下一个N结果。
有没有办法可以运行两个vogels查询,第二个查询从第一个查询中断的地方开始?谢谢。
答案 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"并在应用程序级别实现这一点