В настоящее время я прорабатываю очень полезное Обучающее руководство по стеку без серверов .В этом учебном пособии создается API-интерфейс AWS Lambda для DynamoDB с конечными точками под названием «create», «get», «list» и т. Д.
Попытка реализовать функцию «get» в моем собственном проектеработал нормально.(Эта функция использует операцию dynamoDbLib.call("get", params);
(я не понимаю, почему она не должна быть getItem
, как в Документация ). Я использую шаблон этой главы иlib-файлы этой главы . Но попытка использовать вместо нее batchget
или BatchGetItem
приводит к следующему сообщению об ошибке: dynamoDb[action] is not a function
.
Просто чтобы прояснить мое намерение:Я просто хочу перечислить все элементы моей таблицы (и, возможно, позже укажу диапазон значений первичного ключа). Я попытался адаптировать функцию "list" из учебника , но действие "query" некажется подходящим, так как "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 }));
}
}
Спасибо заподдержка и обратная связь, но не критикуйте меня слишком сильно, поскольку я считаю себя нубом!
Хорошего дня!