我目前正在通过非常有用的Serverless Stack Tutorial工作。在本教程中,制作了一个针对DynamoDB的AWS Lambda API,其端点称为“创建”,“获取”,“列表”等。
尝试将“ get”功能实现到我自己的项目中很好。 (此函数使用dynamoDbLib.call("get", params);
操作(我不明白为什么不应该像Documentation那样使用getItem
)我正在使用此chapter的模板和chapter的lib文件。
但是尝试使用batchget
或BatchGetItem
替代会导致以下错误消息:dynamoDb[action] is not a function
。
仅是为了明确我的意图:我只想列出表中的所有项目(并可能在以后指定一系列主键值)。我尝试改编tutorial的“列表”功能,但“查询”操作似乎不合适,因为"KeyConditionExpression": "string",
仅允许将主键与相等运算符({{ 1}})。 (不过,可以通过=
查询排序键)。
您对我应该如何进行有什么建议? BatchGetItem运算符也不理想,我必须将项目指定为数组而不是数字范围!
最后,这是代码的最后状态:
a between b and c
感谢支持和反馈,但不要因为批评我而对我太苛刻!
祝你有美好的一天!
答案 0 :(得分:0)
您需要关注的第一件事是DocumentClient
与AWS.DynamoDB
文档说:
文档客户端简化了Amazon DynamoDB中项目的处理 通过抽象掉属性值的概念。
dynamoDb[action] is not a function
-表示它不具有该功能(由于区分大小写,请尝试添加batchGet
)。
我浏览了文档,发现文档documentclient
支持以下功能:
来自: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 }));
}
希望这会对您有所帮助。随时询问您是否还有其他问题。