首页 > 解决方案 > 使用 Dynamoose.js 和 Angular6 进行分页

问题描述

是否有使用 Dynomoose.js 使用 Angular 实现分页的良好实践。我想使用 scan.limit() 从数据库中获取一些电影,例如 20。如何获得第二次扫描 20-40 电影和 40-60 电影?我应该使用 scan.startAt(key) 来检索更多数据吗?

exports.listing = (req, res, next) => {
  MoviesModel.scan()
    .exec()
    .then(movies=> {
      if(movies.lastKey){
        MovieModel.scan().startAt(movies.lastKey).exec(function(err, movies){
          res.json(movies);
        });
      }  
     })
    .catch(err => next(err));
};

标签: node.jsamazon-dynamodbangular7dynamoose

解决方案


一种简单的方法总是在这里是在客户端执行分页,例如,ngx-pagination请参见此处

    <ul>
      <li *ngFor="let item of collection | paginate: { itemsPerPage: 10, currentPage: p }"> ... </li>
    </ul>

    <pagination-controls (pageChange)="p = $event"></pagination-controls>

在后端只需返回所有记录Model.scan().exec()并将它们存储在collection属性中:

exports.listing = (req, res, next) => {
  MoviesModel.scan()
    .exec()
    .then(movies=> {
      if(movies.lastKey){
        MovieModel.scan().exec(function(err, movies){
          res.json(movies);
        });
      }  
     })
    .catch(err => next(err));
};

推荐阅读