【发布时间】:2018-09-29 21:38:52
【问题描述】:
我目前正在通过非常有用的Serverless Stack Tutorial 工作。在本教程中,创建了一个到 DynamoDB 的 AWS Lambda API,端点称为“create”、“get”、“list”等。
尝试在我自己的项目中实现“get”功能效果很好。 (这个函数使用dynamoDbLib.call("get", params);操作(我不明白为什么它不应该是getItem,就像Documentation一样)我正在使用这个chapter的模板和这个chapter的lib文件.
但尝试使用 batchget 或 BatchGetItem 会导致以下错误消息:dynamoDb[action] is not a function。
只是为了说明我的意图:我只想列出我表中的所有项目(并且可能稍后指定一系列主键值)。我尝试调整tutorial 的“列表”功能,但“查询”操作似乎不合适,因为"KeyConditionExpression": "string", 只允许将主键与相等运算符(=)进行比较。 (排序键可以用a between b and c查询)。
你对我应该如何进行有什么建议吗? BatchGetItem 运算符并不理想,我必须将项目指定为数组而不是数字范围!
最后,这是代码的最后状态:
import * as dynamoDbLib from "./libs/dynamodb-lib";
import { success, failure } from "./libs/response-lib";
export async function main(event, context, callback) {
var params = {
"RequestItems" : {
"my-table-name" : {
"ConsistentRead":false,
"Keys":[{
"id":{
"N":"1",
"N":"2"
}
}]
}
}
};
try {
const result = await dynamoDbLib.call("BatchGet", params);
if (result.Item) {
// Return the retrieved item
callback(null, success(result.Item));
} else {
callback(null, failure({ status: false, error: "Item not found." }));
}
} catch (e) {
console.log(e);
callback(null, failure({ status: false }));
}
}
感谢您的支持和反馈,但请不要批评我,因为我认为自己是菜鸟!
祝你有美好的一天!
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-dynamodb serverless-framework serverless