【问题标题】:How to do dynamodb pagination in lambda function with nodejs如何使用nodejs在lambda函数中进行dynamodb分页
【发布时间】:2020-11-24 01:22:06
【问题描述】:

我希望前端在 event.queryStringParameters 中决定 currentPage、pageSize(一页中的数据数)和排序(+ 表示升序/- 表示降序)。

Dynamodb 属性
-id(string)(分区键)
-createdAt(日期)
-url(字符串)
-createdBy(string)
-标题(字符串)

但是我创建这个函数很麻烦,我只能设置pageSize,我的函数中不知道如何处理currentPage和排序。

以下是我当前的 lambda 函数。
getBanner.js

'use strict'
const AWS = require('aws-sdk');

exports.handler = async function (event, context, callback) {
    const documentClient = new AWS.DynamoDB.DocumentClient();

    let responseBody = "";
    let statusCode = 0;

    const queryParams = JSON.stringify(event.queryStringParameters);

    /* queryParams will look like this
     {
       "currentPage": "0",
       "pageSize": "30",
       "sorting": "-status"
     }
    */

    const params = {
        TableName : "Banner",
        Limit:queryParams.pageSize
    };

    try{
        const data = await documentClient.scan(params).promise();
        responseBody = JSON.stringify(data.Items);
        statusCode = 200
    }catch(err){
        responseBody = `Unable to get Alerts: ${err}`;
        statusCode = 403
    }

    const response = {
        statusCode: statusCode,
        headers:{
            "Content-Type": "application/json",
            'Access-Control-Allow-Origin': '*', // Required for CORS support to work
        },
        body: responseBody
    }

    return response
}

【问题讨论】:

  • 你需要回去设计你的 DynamoDB 我的朋友。如果需要聊天,请告诉我
  • 你能解释更多吗?谢谢
  • 要做分页,我们需要有一个设计。你有它吗?如果是,我可以查看它是否有效
  • 以上更新。非常感谢
  • 这样的设计,如何实现分页呢?请起草你的逻辑

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

在 DynamoDB (link to docs) 中,分页无法以这种方式工作。这是另一个示例,说明 SQL 数据库实践知识可能会阻碍您对 DynamoDB 的理解。

DynamoDB 对 scanquery 操作的响应限制为 1MB。任何比这更大的东西都会被分页。这意味着 DynamoDB 将根据响应的大小而不是响应中的项目数对结果进行分页。此限制可确保您的响应保持较小且易于管理,同时您的查询保持高性能。

一次获取 1MB 的数据不同于一次获取N 行,这在 SQL 数据库中的分页中很常见。在实施前端解决方案之前,花点时间了解 DDB 如何使用 LastEvaluatedKeyExclusiveStartKey 处理分页。

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 2021-03-09
    • 2017-08-03
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多