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 以拉取下一个项目。
查看这些示例:
请查看完整的使用文档:
我在 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 以拉取下一个项目。
查看这些示例:
请查看完整的使用文档: