DynamoDB。我只想列出项目

时间:2018-09-28 04:57:09

标签: amazon-web-services aws-lambda amazon-dynamodb serverless-framework serverless

我目前正在通过非常有用的Serverless Stack Tutorial工作。在本教程中,制作了一个针对DynamoDB的AWS Lambda API,其端点称为“创建”,“获取”,“列表”等。

尝试将“ get”功能实现到我自己的项目中很好。 (此函数使用dynamoDbLib.call("get", params);操作(我不明白为什么不应该像Documentation那样使用getItem)我正在使用此chapter的模板和chapter的lib文件。 但是尝试使用batchgetBatchGetItem替代会导致以下错误消息:dynamoDb[action] is not a function

仅是为了明确我的意图:我只想列出表中的所有项目(并可能在以后指定一系列主键值)。我尝试改编tutorial的“列表”功能,但“查询”操作似乎不合适,因为"KeyConditionExpression": "string",仅允许将主键与相等运算符({{ 1}})。 (不过,可以通过=查询排序键)。

您对我应该如何进行有什么建议? BatchGetItem运算符也不理想,我必须将项目指定为数组而不是数字范围!

最后,这是代码的最后状态:

a between b and c

感谢支持和反馈,但不要因为批评我而对我太苛刻!

祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

您需要关注的第一件事是DocumentClientAWS.DynamoDB

文档说:

  

文档客户端简化了Amazon DynamoDB中项目的处理   通过抽象掉属性值的概念。

dynamoDb[action] is not a function-表示它不具有该功能(由于区分大小写,请尝试添加batchGet)。

我浏览了文档,发现文档documentclient支持以下功能:

  • batchGet(参数,回调)
  • batchWrite(参数,回调)
  • createSet(列表,选项)
  • 删除(参数,回调)
  • 获取(参数,回调)
  • 放置(参数,回调)
  • 查询(参数,回调)
  • 扫描(参数,回调)
  • 更新(参数,回调)

来自:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html

要获取项目列表并仅获取所需的属性,可以使用scan

const params = {
  ProjectionExpression: 'id, name', // fields you need
  TableName: 'table_name'
};

try {
  const result = await dynamoDbLib.call("scan", params);
  // Return the list of items in response body
  callback(null, success(result.Items));
} catch (e) {
  callback(null, failure({ status: false }));
}

希望这会对您有所帮助。随时询问您是否还有其他问题。