我正在用dynamodb + nodejs后端实现一个网站。我在服务器端使用Vogels.js查询dynamodb并在网页上显示结果。因为我的查询返回了很多结果,所以我希望最初只将N(例如5)结果返回给用户,并在用户要求更多时返回下一个结果。
是否有方法可以从第一个查询停止的地方开始运行第二个vogels查询?谢谢。
发布于 2015-12-23 03:41:56
是的,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()
});发布于 2015-12-22 02:49:45
是的,有可能,DynamoDB有一些叫做"LastEvaluatedKey“的东西,它将为您的目的服务。
步骤1)使用选项“”=记录数查询表
参考:Query.html
步骤2)如果查询的记录比“限制值”多,DynamoDB将返回一个"LastEvaluatedKey“,您可以在下一个查询中以"ExclusiveStartKey”的形式传递该“LastEvaluatedKey”,以获取下一组记录,直到没有记录为止。
参考:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Query
注意:要知道要获得以前的记录集,您可能必须存储所有的"LastEvaluatedKeys“,并在应用程序级别实现这一点。
https://stackoverflow.com/questions/34407017
复制相似问题