Node.js 通过AWS Amplify使用查询API获取所有项目

Node.js 通过AWS Amplify使用查询API获取所有项目,node.js,aws-amplify,dynamodb-queries,amplifyjs,Node.js,Aws Amplify,Dynamodb Queries,Amplifyjs,如何通过调用dynamodb.query获取所有项目? 文档说明我们需要查找是否存在LastEvaluatedKey。只是想知道我们如何才能有效地聚合所有项目 app.get(路径、函数(请求、恢复){ var allItems=[]; 变量参数={ TableName:TableName, “索引名”:“状态索引”, “KeyConditionExpression”:“#attrib_name=:attrib_value”, “ExpressionAttributeNames”:{“属性名称”

如何通过调用dynamodb.query获取所有项目?

文档说明我们需要查找是否存在
LastEvaluatedKey
。只是想知道我们如何才能有效地聚合所有项目

app.get(路径、函数(请求、恢复){
var allItems=[];
变量参数={
TableName:TableName,
“索引名”:“状态索引”,
“KeyConditionExpression”:“#attrib_name=:attrib_value”,
“ExpressionAttributeNames”:{“属性名称”:“状态”},
“ExpressionAttributeValues”:{:属性值:req.query.status},
“向前扫描索引”:false
};
dynamodb.query(参数,onQuery);
函数onQuery(错误、数据){
如果(错误){
res.json({error:'无法加载项:'+err});
}否则{
//我应该像这样汇总所有项目吗?
allItems=allItems.concat(数据项);
//那么我应该像这样将其设置为res以返回所有项目吗?
res.json(allItems);
if(typeof data.LastEvaluatedKey!=“未定义”){
params.ExclusiveStartKey=data.LastEvaluatedKey;
dynamodb.query(参数,onQuery);
}
}
}
});
请查看代码中的注释。这就是我认为我们需要有适当的代码来聚合所有项目并返回响应的地方


我还没有找到调试这个的方法,因为我对DynamoDB和AWS Amplify还相当陌生。请告诉我是否有更简单的方法在AWS amplify备份的GET API中调试此问题。

这不是对您问题的直接回答,而是一个建议。我写了一篇文章

它的TLDR是:

  • 创建Lambda函数,该函数使用AppSync客户端执行 GraphQL操作。使用polyfills并安装所有必要的 依赖关系
  • 确保Lambda函数具有正确的执行策略
  • 使用AppSync的multi-auth允许由签名的两个请求 Amazon Cognito用户池以及使用 亚马逊的IAM。这样,客户机和服务器(也称为 Lambda函数)将进行身份验证,并且可以具有不同的CRUD 权限

如果我是你,并且想通过Lambda函数访问我的数据库,我会遵循该教程,并使用AppSync进行访问。对你来说重要的一个优点是,你不必关心
LastEvaluatedKey
,你可以使用AppSync的
nextToken
,这样更安全。

这不是对你问题的直接回答,而是一个建议。我写了一篇文章

它的TLDR是:

  • 创建Lambda函数,该函数使用AppSync客户端执行 GraphQL操作。使用polyfills并安装所有必要的 依赖关系
  • 确保Lambda函数具有正确的执行策略
  • 使用AppSync的multi-auth允许由签名的两个请求 Amazon Cognito用户池以及使用 亚马逊的IAM。这样,客户机和服务器(也称为 Lambda函数)将进行身份验证,并且可以具有不同的CRUD 权限

如果我是你,并且想通过Lambda函数访问我的数据库,我会遵循该教程,并使用AppSync进行访问。对您来说重要的一个优点是,您不必关心
LastEvaluatedKey
,相反,您可以使用AppSync的
nextToken
,这更安全。

查询返回分页结果-如果您想要所有数据,则需要继续查询和聚合,直到LastEvaluatedKey完成空的


请参阅:

查询返回分页结果-如果需要所有数据,则需要继续查询和聚合,直到LastEvaluatedKey为空


请参阅:

我喜欢这种方法,这篇文章既漂亮又详细!。我的下一个项目是GraphQL和AppSync。等不及了!现在,我将坚持我们所拥有的,并且需要找到一种方法以优化的方式获取所有记录。我喜欢这种方法,这篇漂亮而详细的文章!。我的下一个项目是GraphQL和AppSync。等不及了!现在,我将坚持我们所拥有的,并且需要找到一种方法以优化的方式获取所有记录。只是想知道聚合的正确方法,并将其发送回放大备份的lambda函数(res对象)。只是想知道聚合的正确方法,并将其发送回放大备份的lambda函数(res对象)。