gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:20 24 4
gpt4 key购买 nike

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

文档指出我们需要查找 LastEvaluatedKey 是否存在。只是想知道我们如何以有效的方式聚合所有项目

app.get(path, function (req, res) {
var allItems = [];
var params = {
TableName: tableName,
"IndexName": "status-index",
"KeyConditionExpression": "#attrib_name = :attrib_value",
"ExpressionAttributeNames": { "#attrib_name": "status" },
"ExpressionAttributeValues": { ":attrib_value": req.query.status },
"ScanIndexForward": false
};

dynamodb.query(params, onQuery);

function onQuery(err, data) {
if (err) {
res.json({ error: 'Could not load items: ' + err });
} else {
// Should I be aggregating all the items like this?
allItems = allItems.concat(data.Items);

// Then should I set it to res like this to return all the items?
res.json(allItems);

if (typeof data.LastEvaluatedKey != 'undefined') {
params.ExclusiveStartKey = data.LastEvaluatedKey;
dynamodb.query(params, onQuery);
}
}
}
});

请查看代码中的注释。这就是我认为我们需要有适当的代码来聚合所有项目并返回响应的地方。

我还没有找到调试此问题的方法,因为我对 DynamoDB 和 AWS Amplify 还很陌生。请让我知道是否有更简单的方法可以在 AWS amplify 备份的 GET API 中调试此问题。

最佳答案

这不是对您问题的直接回答,而是一个建议。我写了一篇文章"How To Use AWS AppSync in Lambda Functions" .

它的 TLDR 是:

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

如果我是您并且想要通过 Lambda 函数访问我的数据库,我会按照该教程并使用 AppSync 来完成此操作。对您来说重要的优点之一是您不必关心 LastEvaluatedKey,而是可以使用 AppSync 的 nextToken,这更安全。

关于node.js - 通过 AWS Amplify 使用查询 API 获取所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com