DynamoDB 元素未显示在 React 应用程序中 Material-Table

DynamoDB elements are not showing up in React app Material-Table

我在 Mac 上本地托管了一个 React 应用程序。我正在使用 Material-Table 来组织我的数据和无服务器后端。我将数据存储在 DynamoDB table(4000 行)中,我正在使用 Amplify、API 网关和 Lambda 来处理端点和请求。

我遇到了一个奇怪的问题,Material-Table 中只显示了大约 2,023 行,但是 DynamoDB 中有 4000 行。当我向 Dynamo 添加 1000 行时,Material-Table 仅显示 1,950 行。我对此很困惑。

我认为可能是 Dynamo 中的配置设置限制了我在 Material-Table 中能够看到的内容。但是我将计划更改为“按需”,仍然遇到同样的问题。

我附上一张 material-table 计数和 dynamodb 计数的图像以供比较。

这是我的 React 应用程序中的 Get 函数:

    try{
        const res = await axios.get(`${config.api.invokeUrl}/products`);
        const products = res.data;
        this.setState({products: products});

    }catch (err){
        console.log(`an error has occured while getting2: ${err}`);
    }
}

componentDidMount = () => {
    this.getProdFromDB();
}

非常感谢任何帮助。 控制台也没有错误。

这是我用于获取项目的 Lambda 函数。

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

exports.handler = async (event, context) => {
    const documentClient = new AWS.DynamoDB.DocumentClient();
    let responseBody = '';
    let statusCode = 0;

    const params = {
        TableName: "Products"
    };

//document scan , you can set filter expressions
    try {
        const data = await documentClient.scan(params).promise();
        responseBody = JSON.stringify(data.Items);
        statusCode = 200;

    } catch(err) {
        responseBody = `Unable to get product: ${err}`;
        statusCode = 403;

    }

    const response = {
        statusCode: statusCode,
        headers: {
            "Content-Type": "application/json",
            "access-control-allow-origin": "*"
        },
        body: responseBody
    };
    return response;
};

当您 运行 dynamodb 查询或扫描时,尝试检查响应。如果结果上有 LastEvaluatedKey,那么您应该进行下一次查询或扫描,包括参数上的 ExclusiveStartKey 以拉取下一个项目。

查看这些示例:

Scan with ExclusiveStartKey

请查看完整的使用文档:

Dynamodb Query

Dynamodb Scan